wp_register_sitemap_provider()


WordPressのwp_register_sitemap_provider()関数は、カスタムサイトマッププロバイダーを登録するために使用されます。XMLサイトマップにカスタムコンテンツを追加する場合に便利です。

構文

wp_register_sitemap_provider( string $name, WP_Sitemaps_Provider $provider );

引数の説明:

  • $name(string)—プロバイダーの一意の名前。
  • $provider(WP_Sitemaps_Provider)WP_Sitemaps_Providerを実装したオブジェクト。

例1: 基本的なカスタムサイトマッププロバイダーの登録

カスタムプロバイダーを登録する最小限の例。

class Custom_Sitemap_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $post_type = '' ) { return array(); } } $provider = new Custom_Sitemap_Provider(); wp_register_sitemap_provider( 'custom', $provider );

例2: カスタム投稿タイプをサイトマップに追加

カスタム投稿タイプのURLリストを返すプロバイダー。

class CPT_Sitemap_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $post_type = '' ) { if ( 'book' === $post_type ) { return array_map( function( $post ) { return array( 'loc' => get_permalink( $post ) ); }, get_posts( array( 'post_type' => 'book', 'numberposts' => 100 ) ) ); } return array(); } } $provider = new CPT_Sitemap_Provider(); wp_register_sitemap_provider( 'books', $provider );

例3: タクソノミーサイトマップの追加

カスタムタクソノミーのサイトマップを登録。

class Taxonomy_Sitemap_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $taxonomy = '' ) { if ( 'genre' === $taxonomy ) { return array_map( function( $term ) { return array( 'loc' => get_term_link( $term ) ); }, get_terms( array( 'taxonomy' => 'genre' ) ) ); } return array(); } } $provider = new Taxonomy_Sitemap_Provider(); wp_register_sitemap_provider( 'genres', $provider );

例4: 外部URLをサイトマップに含める

外部URLをサイトマップに追加する例。

class External_URLs_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $object_subtype = '' ) { return array( array( 'loc' => 'https://example.com/external-page' ) ); } } $provider = new External_URLs_Provider(); wp_register_sitemap_provider( 'external', $provider );

例5: ユーザーサイトマップのカスタマイズ

ユーザープロフィールページのサイトマップを登録。

class Users_Sitemap_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $object_subtype = '' ) { return array_map( function( $user ) { return array( 'loc' => get_author_posts_url( $user->ID ) ); }, get_users() ); } } $provider = new Users_Sitemap_Provider(); wp_register_sitemap_provider( 'authors', $provider );

例6: サイトマップの優先度と頻度の設定

優先度と変更頻度を指定する例。

class Priority_Sitemap_Provider extends WP_Sitemaps_Provider { public function get_url_list( $page_num, $object_subtype = '' ) { return array( array( 'loc' => home_url( '/important-page/' ), 'priority' => '1.0', 'changefreq' => 'daily' ) ); } } $provider = new Priority_Sitemap_Provider(); wp_register_sitemap_provider( 'priority', $provider );

例7: 複数のサイトマッププロバイダーを一度に登録

複数のプロバイダーをループで登録。

$providers = array( 'products' => new Products_Sitemap_Provider(), 'news' => new News_Sitemap_Provider() ); foreach ( $providers as $name => $provider ) { wp_register_sitemap_provider( $name, $provider ); }

注意点

  • プロバイダークラスはWP_Sitemaps_Providerを継承する必要があります。
  • get_url_list()メソッドは必須です。
  • サイトマップは最大1000URLまでです。

関連機能: