サーチ…


パラメーター

パラメータ説明
$template 1つのパラメータをフィルタに渡します。 $templateは、アクティブな子テーマまたは親テーマにあるポストタイプの適切なファイルへの現在のパスです(下位のランクのテンプレートを持つ子テーマがない場合。詳細については)。

備考

変更していなくても、 $template返さなければなりません。これが混乱する場合は、 apply_filter()がコードで使用されている例を見てください

後で使用するためにここに変数を設定しないでください。これにはより良いフックがあります。

このフィルタの便利なプログラムの流れは次のとおりです。

  1. check $templateはカスタムポストタイプ名 - >テンプレート階層が含まれています!
  2. そうでない場合は、適切なファイルを探すためにプラグインを検索してください。>ファイルのフォルダを検索するのではなく、特定のファイルを指す方がいいです。もっと効率的な。しかし、完全に開発者に。
  3. テンプレートを返します。

簡単な例

このフィルターは非常に便利です。開発者にとって共通の問題の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