WordPress
template_include
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:
- Check
$template
inclut notre nom de poste personnalisé -> hiérarchie de modèles! - 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.
- 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;
}