概要
get_post_type_archive_templateフィルタは、WordPressにおいて特定の投稿タイプのアーカイブテンプレートを取得する際に、デフォルトのテンプレートを変更する機能を提供します。このフィルタを使用することで、特定の投稿タイプに対して独自のアーカイブテンプレートを指定することができ、テーマやプラグインのカスタマイズが容易になります。
このフィルタが使用される場面
- 投稿タイプごとの専用のアーカイブページを作成する時
- カスタム投稿タイプのクエリを最適化する際
- 特定の条件に基づいてテンプレートを変更する場合
- テンプレート階層を活用して独自のデザインを適用する時
- プラグインによって新たに定義された投稿タイプのアーカイブをサポートする場合
- 多言語サイトにおいて言語別のアーカイブテンプレートを設定する時
- SEO対策のために特定の投稿タイプのデザインを変更する際
- ユーザーのリクエストに基づいて動的にテンプレートを変更する場合
構文
add_filter('get_post_type_archive_template', 'your_custom_template_function');
パラメータ
$template: 取得されたテンプレートファイルのパス。フィルタを通過することで変更可能。
戻り値
テンプレートファイルのパス(変更された場合、またはデフォルトのパス)。
関連する関数
使用可能なバージョン
このフィルタは、WordPressバージョン 4.4 から使用可能です。
コアファイルのパス
wp-includes/post.php
サンプルコード
サンプル1: カスタムテンプレートの追加
このサンプルコードは、カスタム投稿タイプ「books」のアーカイブページで異なるテンプレートを指定します。
add_filter('get_post_type_archive_template', function($template) {
if (is_post_type_archive('books')) {
$template = locate_template('archive-books.php');
}
return $template;
});
サンプル2: デフォルトのテンプレートを変更する
特定の投稿タイプ「movies」のアーカイブ用テンプレートを変更するサンプルコードです。
add_filter('get_post_type_archive_template', function($template) {
if (is_post_type_archive('movies')) {
return get_stylesheet_directory() . '/custom-archive-movies.php';
}
return $template;
});
サンプル3: デフォルトテンプレートのロードをスキップ
特定の条件に基づいてロードするテンプレートを変更するサンプルです。
add_filter('get_post_type_archive_template', function($template) {
if (is_post_type_archive('products')) {
return ''; // デフォルトのテンプレートをロードしない
}
return $template;
});
サンプル4: 複数のカスタム投稿タイプに対応
複数のカスタム投稿タイプで同様のカスタムテンプレートを適用するサンプルです。
add_filter('get_post_type_archive_template', function($template) {
if (is_post_type_archive(['services', 'portfolios'])) {
return get_stylesheet_directory() . '/archive-services-portfolios.php';
}
return $template;
});
サンプル5: テンプレートを条件で切り替える
条件に応じて異なるテンプレートを適用する例です。
add_filter('get_post_type_archive_template', function($template) {
if (is_post_type_archive('events') && is_user_logged_in()) {
return get_stylesheet_directory() . '/archive-events-logged-in.php';
} elseif (is_post_type_archive('events')) {
return get_stylesheet_directory() . '/archive-events-guest.php';
}
return $template;
});
この関数のアクションでの使用可能性
| アクション名 | 使用可能性 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
非推奨または削除されたバージョン
このフィルタは、特定の非推奨または削除されたバージョンはありません。