web-dev-qa-db-fra.com

Vérifier si une barre latérale est active sur la page en cours

Est-il possible de vérifier si des barres latérales sont actives sur la page actuelle?

Comme ça:

@modifier

Cette fonction renvoie également true même si la barre latérale de cette page n'est pas active ...

<?php if(is_active_sidebar('sidebar-1')) {
// sidebar-1 is active...
} ?>

Mais je dois vérifier si une barre latérale est active (sans spécifier le nom de la barre), et je ne dois vérifier que la page actuelle, pas pour toutes les pages, comme:

<?php if(any_sidebar_active_on_this_page()) {
// has sidebar active on this specific page, do something...
} ?>
2
rafaelfndev

Je crois que le problème ici est un problème de langue vernaculaire.

is_active_sidebar n'est pas spécifique à la page - vérifie simplement pour voir s'il contient des données sur tout le site.

Vous posez une question différente. On dirait que vous demandez "ce modèle référence-t-il et les barres latérales ET si l'une de ces barres latérale contient des données ,?" On dirait également que vous ne voulez pas du tout faire référence aux noms des barres latérales et que vous aimeriez que cette question soit une question générique.

Ce dernier élément rend la tâche difficile et peut potentiellement en faire un problème d’architecture - pas un problème de WordPress. Pensez à WordPress en tant que serveur: il ne prend que vos commandes et vous permet d'obtenir des résultats. Il n’a pas été conçu pour que vous posiez des questions du type "est-ce que quelqu'un dans le restaurant mange un steak?" - donc il n'a rien pour vous là-bas.

Vous POUVEZ vous lier dans https://codex.wordpress.org/Plugin_API/Action_Reference/dynamic_sidebar

Vous pouvez ensuite définir une variable ou appeler une fonction chaque fois que quelqu'un appelle une barre latérale contenant des données. Cela vous permettrait de réagir à ces moments-là.

2
Sterling Hamilton
foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) {    
    if(is_active_sidebar($sidebar['name'])) {
        // $sidebar['name'] is active...
    }
}

Cela fera une boucle dans la liste des barres latérales enregistrées et ensuite vérifiera à chaque chargement de page s'il en existe.

0
Sid