Come determinare se un post ha contenuto widget?

6 apr 2011, 19:02:19
Visualizzazioni: 605
Voti: 2

Ho una sidebar registrata chiamata "my-header" che influisce sul posizionamento assoluto degli elementi sottostanti nel markup.

Quindi ho bisogno di eseguire una query in header.php per determinare se la sidebar è presente per il post corrente, e scrivere un identificatore di classe nel tag body del mio tema. Userò questa classe CSS per regolare di conseguenza il posizionamento assoluto degli elementi.

Esiste un metodo che può essere chiamato, separatamente dal metodo usato per visualizzare la sidebar, per determinare se il post ha contenuto widget per il widget "my-sidebar"? Per esempio, uno che restituisce semplicemente vero/falso?

Dopo aver esaminato widgets.php, ho provato a usare is_active_sidebar('my-header') ma restituisce vero per tutte le pagine. Ho bisogno di una funzione che accetti il post come argomento. Altrimenti, se non esiste, suppongo che dovrò creare la mia funzione.

3
Commenti

Potresti voler dare un'occhiata al plugin My Snippets di Justin Tadlock, http://wordpress.org/extend/plugins/my-snippets/

Manzabar Manzabar
6 apr 2011 19:33:05

@Manzabar: sembra interessante. Lo avevo in lista da tempo per aggiungerlo al mio tema. Apprezzo il riferimento.

Scott B Scott B
6 apr 2011 19:38:48

Potresti spiegare questa parte - se il post ha contenuti widget per il widget "my-sidebar". Post e widget sono cose completamente diverse, non si intersecano, a meno che non si utilizzi qualche widget personalizzato sensibile al contesto.

Rarst Rarst
31 mag 2011 02:03:27
Tutte le risposte alla domanda 1
0
<?php
$bodyclass = "";
// siamo su una pagina 'single'? ad esempio un articolo, una pagina o un altro tipo di post personalizzato?
if(is_single()){
    // è un post di tipo 'page'? oppure è un articolo del blog?
    global $post;
    if($post->post_type == 'page'){
        // ora possiamo verificare se abbiamo una sidebar con contenuti attivi
        if( is_active_sidebar('my-header')){
            $bodyclass="wehavesidebarcontentyay";
        }
    }
}

?>
<body <?php body_class($bodyclass); ?>>

Anche se sono sicuro che se hai body_class nel tag body, allora hai già le classi css e i selettori necessari per fare questo senza il codice PHP.

9 ago 2011 14:17:32