2010-03-18 7 views
0

Je suis en train d'envelopper la barre latérale par un DIV, et si la barre latérale est vide, la DIV ne doit pas être affichéWordPress - Comment savoir si une barre latérale est vide sans la charger?

Mais je ne peux pas utiliser des codes comme

if(dynamic_sidebar(1)) 
{ 
    echo '<div>'; 
    dynamic_sidebar(1); 
    echo '</div>'; 
} 

comme il se chargera de la barre latérale avant la DIV si elle n'est pas vide, des idées?

Répondre

2

Vous pouvez toujours utiliser en mémoire tampon de sortie. Lorsque la mise en mémoire tampon de sortie est activée, tout ce qui serait normalement renvoyé à l'écran est stocké dans un tampon. Vous pouvez ensuite tester pour voir s'il y a quelque chose dans le tampon avant de sortir vos balises div.

ob_start(); 
dynamic_sidebar(1); 
$sidebar = ob_get_clean(); // get the contents of the buffer and turn it off. 
if ($sidebar) { 
    echo "<div>" . $sidebar . "</div>"; 
} 
2

Essayez:

if (is_active_sidebar(1)) 
{ 
    echo '<div>'; 
    dynamic_sidebar(1); 
    echo '</div>'; 
} 
+0

cela ne fonctionne pas – Edward

2

Vous pouvez utiliser le WordPress is_dynamic_sidebar(); fonction.

Renvoie true si une barre latérale enregistrée contient un widget; sinon faux.

Exemple:

<?php if(is_active_sidebar('my-sidebar')) { ?> 

<div class="about-us"> 

    <?php dynamic_sidebar('my-sidebar'); ?> 

</div> 

<?php } ?> 

C'est le widget zone/barre latérale script registre je lance de la functions.php:

function foxinni_widgets_init() { 

    register_sidebar(array(
     'name' => 'My Sidebar', 
     'id' => 'my-sidebar', 
     'description' => '','before_widget' => '','after_widget' => '','before_title' => '','after_title' => '', 
    )); 

} 
add_action('widgets_init', 'foxinni_widgets_init'); 

Notez que j'utilise la chaîne, my-sidebar, pour identifier la barre latérale par id.

Questions connexes