Recherche…


Paramètres

Paramètre Explication
$template Transmet un paramètre au filtre, $template est le chemin d'accès actuel au fichier approprié pour le type de publication tel que trouvé dans le thème enfant ou le thème parent actif (si aucun thème enfant en place ou thème enfant n'a de modèle inférieur). pour plus de détails).

Remarques

Vous devez retourner $template même si vous ne modifiez pas. Si cela vous apply_filter() , regardez des exemples où apply_filter() a été utilisé dans le code

Vous ne devez pas configurer de variables ici pour les utiliser plus tard, il existe de meilleurs crochets pour cela.

Un flux de programme utile pour ce filtre est:

  1. Check $template inclut notre nom de poste personnalisé -> hiérarchie de modèles!
  2. Si ce n'est pas le cas, recherchez dans notre plugin les fichiers appropriés -> Il est préférable de pointer vers des fichiers spécifiques plutôt que de chercher dans les dossiers des fichiers. Plus efficace. Mais complètement au développeur.
  3. renvoyer le modèle

Exemple simple

Ce filtre est très utile. L'un des problèmes les plus courants pour les développeurs est d'inclure les modèles dans les plugins qu'ils développent.

Le filtre est appliqué immédiatement après que wordpress a localisé le modèle approprié dans le thème enfant / parent actif à l'aide de la hiérarchie wp.

Veillez à définir quand vous souhaitez modifier le chemin du modèle. Dans l'exemple ci-dessous, le code vérifie si la page actuelle est la vue unique de notre type de publication personnalisé cpt .

Exemple assez simple pour commencer!

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;

}

Plus exemple Adv

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow