Cum să determini dacă un post conține conținut de widget?

6 apr. 2011, 19:02:19
Vizualizări: 605
Voturi: 2

Am un sidebar înregistrat numit "my-header" care afectează poziționarea absolută a elementelor de sub el în markup.

Am nevoie să execut o interogare în header.php pentru a determina dacă sidebar-ul este prezent pentru postarea curentă și să scriu un identificator de clasă în tag-ul body al temei mele. Voi folosi această clasă CSS pentru a ajusta poziționarea absolută a elementelor în consecință.

Există o metodă care poate fi apelată, separat de metoda folosită pentru afișarea sidebar-ului, pentru a determina dacă postarea are conținut de widget pentru widget-ul "my-sidebar"? De exemplu, una care returnează doar true/false?

După ce am analizat widgets.php, am încercat să folosesc is_active_sidebar('my-header') dar returnează true pentru toate paginile. Am nevoie de o funcție care acceptă postarea ca argument. Dacă nu există, presupun că voi crea propria funcție.

3
Comentarii

Ai putea să arunci o privire la pluginul My Snippets al lui Justin Tadlock, http://wordpress.org/extend/plugins/my-snippets/

Manzabar Manzabar
6 apr. 2011 19:33:05

@Manzabar: pare interesant. Am avut asta pe lista mea pentru a-l adăuga în tema mea de ceva timp. Apreciez referinta.

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

Poți să explici această parte - dacă postarea are conținut de widget pentru widget-ul "my-sidebar". Postările și widget-urile sunt lucruri complet diferite, ele nu se intersectează, decât dacă folosești un widget personalizat sensibil la context.

Rarst Rarst
31 mai 2011 02:03:27
Toate răspunsurile la întrebare 1
0
<?php
$bodyclass = "";
// suntem pe o pagină 'single'? adică un articol, pagină sau alt tip de postare personalizată?
if(is_single()){
    // este aceasta o postare de tip 'page'? sau este un articol de blog?
    global $post;
    if($post->post_type == 'page'){
        // acum putem verifica dacă avem o bară laterală cu conținut activ
        if( is_active_sidebar('my-header')){
            $bodyclass="wehavesidebarcontentyay";
        }
    }
}

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

Desigur, dacă aveți body_class pe tag-ul body, atunci probabil aveți deja clasele CSS și selectorii necesari pentru a face asta fără codul PHP.

9 aug. 2011 14:17:32