web-dev-qa-db-fra.com

Vérifier si le modèle est chargé dans une page

J'ai une partie de modèle comme celle-ci:

<nav id="subpagemenu" class="sidebar">
    <?php get_template_part( 'nav', 'subset' ); ?>
    <?php get_sidebar(); ?>
</nav>

Les deux sont conditionnels, je veux dire, rien ne se chargera s'il n'y a pas de contenu. s'il y a du contenu, ils chargent tous les deux des boîtes comme:

 <div class="widget"> 

Maintenant, j'aimerais pouvoir savoir s'il y a des widgets (barre latérale ou mon template_part), afin que dans mon functions.php, je puisse définir une variable $ mywidgets = true ou false.

Je sais que je peux utiliser '_is_active_sidebar' pour une partie, mais comment puis-je vérifier l'autre partie? Je ne veux pas enregistrer cette partie dans la barre latérale ... Tout ce dont j'ai besoin, c'est d'un "vrai/faux".

J'ai essayé 'is_page_template' et 'set_theme_mod'. J'ai aussi regardé ces discussions:

https://stackoverflow.com/questions/6366351/getting-dom-elements-by-class-name

Est-il possible de vérifier quel fichier modèle est en cours de chargement, s'il ne s'agit pas d'un fichier de modèle de page?

Est-ce que je pense à cela de la mauvaise façon? Besoin de construire le thème différemment?

Merci!

1
Jennifer Michelle

Vous pouvez définir une variable globale dans votre thème functions.php

global $mywidgets;
$mywidgets = false;

dans votre partie du modèle, ajoutez

global $mywidgets;
$mywidgets = true;

et dans vos fonctions, vous pouvez vérifier si sa définition est vraie:

function my_function(){
    global $mywidgets;
    $mywidgets = true;
    if ($mywidgets){
       // YES Your template part is loaded
    }else{
       // NO Your template part is not loaded
    }
}
4
Bainternet