Si je visite une page de mon site WordPress, WP va et détermine le fichier de modèle à utiliser en fonction de la hiérarchie de modèles .
Si je fais quelque chose de logique en vérifiant le crochet init
et en disant que mes conditions sont remplies, comment puis-je dire à WordPress de charger un fichier de modèle de mon choix, et non celui que WordPress aurait normalement utilisé?
Pouvez-vous exécuter la logique sur le filtre template_include
? Sinon, vous pouvez définir une constante/globale et l'utiliser dans template_include
pour servir le modèle approprié.
Le filtre template_include répertorie le chemin d'accès au fichier de modèle à inclure. Pour éviter les erreurs, vous devez vérifier si le modèle existe. Pour les fichiers theme/child-theme, Locate_template effectue cette opération.
add_filter("template_include", "sc_redirect_properties_to_registration");
function sc_redirect_properties_to_registration( $template )
{
if( is_user_logged_in() && ! is_page("the-properties") )
return $template;
//You could include templates from plugins
//$template = plugin_dir_path(__FILE__).'templates/plugin-template.php';
//Best to check the template exists. With **theme/child-theme** templates
// you can do this with locate_template.
return locate_template('template-registration.php');
}
Je suppose que vous pourriez utiliser certaines conditions comme celle-ci:
if(is_front_page()){
// Home page layout
} elseif(is_page()){
// General page layout
if(is_page('contact')){
// Page layout specific to the contact page
} elseif(is_page('about')){
// Page layout specific to the about page
}
}
Ensuite, obtenez des parties de votre modèle en fonction de la section de votre site Web en utilisant get_template_part();