web-dev-qa-db-fra.com

Charger un fichier de modèle différent lorsque la condition est remplie?

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é?

3
Brady

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');
}
2
Stephen Harris

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();

0
Michael Ecklund