WordPress
template_include
サーチ…
パラメーター
パラメータ | 説明 |
---|---|
$template | 1つのパラメータをフィルタに渡します。 $template は、アクティブな子テーマまたは親テーマにあるポストタイプの適切なファイルへの現在のパスです(下位のランクのテンプレートを持つ子テーマがない場合。詳細については)。 |
備考
変更していなくても、 $template
返さなければなりません。これが混乱する場合は、 apply_filter()
がコードで使用されている例を見てください
後で使用するためにここに変数を設定しないでください。これにはより良いフックがあります。
このフィルタの便利なプログラムの流れは次のとおりです。
- check
$template
はカスタムポストタイプ名 - >テンプレート階層が含まれています! - そうでない場合は、適切なファイルを探すためにプラグインを検索してください。>ファイルのフォルダを検索するのではなく、特定のファイルを指す方がいいです。もっと効率的な。しかし、完全に開発者に。
- テンプレートを返します。
簡単な例
このフィルターは非常に便利です。開発者にとって共通の問題の1つは、開発するプラグインにテンプレートを含める方法です。
フィルタは、wordpressがwp階層を使用してアクティブな子/親テーマに適切なテンプレートを配置した直後に適用されます。
テンプレートパスを変更するときは、慎重に定義するようにしてください。次の例では、コードは、現在のページがカスタムポストタイプcpt
単一のビューであるかどうかを確認します。
簡単な例を始めましょう!
add_filter('template_include', 'custom_function');
function custom_function($template){
//change a single post template...
if( is_singular('cpt') ){
$template= 'path/to/another/template_file';
}
return $template;
}
詳細な例
add_filter('template_include', 'custom_function');
function custom_function($template){
/*
* This example is a little more advanced.
* It will check to see if $template contains our post-type in the path.
* If it does, the theme contains a high level template e.g. single-cpt.php
* If not we look in the plugin parent folder for the file. e.g. single-cpt.php
*/
//check to see if the post type is in the filename (high priority file)
//return template if it is!
global $post;
if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){
return $template;
}
$plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here...
if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php') ){
$template= $plugin_path.'/single-'.$post->post_type.'.php';
} elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) {
$template= $plugin_path.'/archive-'.$post->post_type.'.php';
}
return $template;
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow