Widgets nu apar în personalizatorul de teme

11 iun. 2014, 10:13:55
Vizualizări: 16.4K
Voturi: 4

Dezvolt o temă nouă și folosesc mai multe bare laterale în această temă. Totul funcționează corect, dar widget-urile nu apar în secțiunea de personalizare a temei. Toate widget-urile funcționează corect în secțiunea "Aspect -> Widgets", dar nu în "Aspect -> Personalizează". Folosesc WordPress 3.9.1.

Așa le-am declarat în functions.php

if(function_exists('register_sidebar'))
 {
    register_sidebar ( array (
            'name' => 'Zona de Widget 1',
            'id' => 'widget-1',
            'description' => 'Zona de Widget 1.',
            'before_widget' => '<div id="%2$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h3>',
            'after_title' => '</h3>' ,
    ) );

    register_sidebar ( array (
            'name' => 'Zona de Widget 2',
            'id' => 'widget-2',
            'description' => 'Zona de Widget 2.',
            'before_widget' => '<div id="%2$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h3>',
            'after_title' => '</h3>' ,
    ) );

    register_sidebar ( array (
            'name' => 'Zona de Widget 3',
            'id' => 'widget-3',
            'description' => 'Zona de Widget 3.',
            'before_widget' => '<div id="%2$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h3>',
            'after_title' => '</h3>' ,
    ) );

    register_sidebar ( array (
            'name' => 'Zona de Widget 4',
            'id' => 'widget-4',
            'description' => 'Zona de Widget 4.',
            'before_widget' => '<div id="%2$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h3>',
            'after_title' => '</h3>' ,
    ) );
}

Și așa le apelez în template.

<?php
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Zona de Widget 1' )) :
endif;
?>

Se afișează corect când am o singură zonă de widget, dar de îndată ce adaug mai multe, dispar din personalizator.

3
Comentarii

Ai încercat să treci la una dintre temele incluse pentru a verifica dacă eroarea încă există? Poți încerca, de asemenea, să dezactivezi pluginurile unul câte unul. Apropo, nu este necesar să verifici dacă funcția există (if(function_exists('register_sidebar'))) la înregistrarea unei bare laterale.

Pieter Goosen Pieter Goosen
11 iun. 2014 10:37:41

Eroarea apare doar cu tema mea, dar ciudat este că folosesc același cod ca în tema 2014.

AKR AKR
11 iun. 2014 10:41:48

Dacă lucrezi la o temă nouă folosind Twenty Fourteen ca bază, asigură-te că nu există conflicte cu ID-urile. Verifică să nu înregistrezi o bară laterală cu același ID de două ori.

Pieter Goosen Pieter Goosen
11 iun. 2014 10:48:16
Toate răspunsurile la întrebare 6
2

Widget-urile APAR în Customizer, dar doar dacă te afli pe pagina unde sunt utilizate.

De exemplu, am o bară laterală pentru pagina de Arhivă. Când sunt în Customizer și pe pagina principală, acea bară laterală nu apare. Dar dacă navighez către o pagină de arhivă în timp ce sunt în Customizer, atunci aceasta va apărea în zona de widget-uri.

16 dec. 2014 09:39:51
Comentarii

Domnule, sunteți un gentleman și un om de știință... și mi-ați salvat câteva fire de păr de pe cap :) Mulțumesc!

sleeper sleeper
27 iul. 2015 07:35:38

atât de mult timp pierdut, de ce nu am găsit acest răspuns mai devreme.

TarranJones TarranJones
25 feb. 2016 11:19:18
0

Acesta este soluția reală la problema ta: Tot ce trebuie să faci este să te asiguri că ai adăugat această funcție în footer și înainte de tag-ul de închidere </body>:

<?php wp_footer();?>

De asemenea, asigură-te că ai <?php wp_head();?> înainte de tag-ul </head>. Sper că acest lucru te ajută......

30 iul. 2017 08:27:18
0

Știu că ai întrebat asta cu mult timp în urmă, dar tocmai am avut aceeași problemă și în sfârșit am găsit soluția. În fișierul meu functions.php, am dezactivat jquery (wp_deregister_script('jquery')). Se pare că acest lucru face ca widget-urile să nu funcționeze în customizer, chiar dacă pagina mea încărcase jquery (prin wp_enqueue_script).

Pentru a rezolva problema (presupunând că ai aceeași problemă ca mine), trebuie să reînregistrezi jquery apelând wp_register_script('jquery', ('url_to_jquery'), false, '1.11.1'[sau orice versiune de jquery ai]).

23 ian. 2015 00:24:13
2

Widget-ul nu va apărea niciodată dacă este apelat prin nume în loc de ID.

Verifică în sidebar.php sau footer.php unde dorești să afișezi widget-ul tău dacă ID-ul sidebar-ului înregistrat în functions.php este același sau nu.

Dacă folosești ID-ul widget-ului tău 'ceva' în functions.php și 'altceva' în locul unde dorești să afișezi widget-ul, atunci nu va funcționa!

Exemplu:

Dacă înregistrezi widget-ul în functions.php folosind "page-sidebar", atunci trebuie să apelezi widget-ul folosind <?php dynamic_sidebar( 'page-sidebar' ); ?> în pagina ta de sidebar sau footer.

11 iun. 2014 10:38:20
Comentarii

Cred că nu asta e problema. Funcționează bine, singura problemă este că acele widget-uri nu apar în secțiunea aspect -> personalizare.

AKR AKR
11 iun. 2014 10:46:26

Citește despre dynamic_sidebar. "index (integer/string) (opțional) Numele sau ID-ul barei laterale dinamice."

Pieter Goosen Pieter Goosen
11 iun. 2014 10:46:29
0

@PieterGoosen are dreptate, în dynamic_sidebar ( 'Widget Area 1' )) apelezi numele, nu ID-ul, care este widget-1.

Încearcă să folosești ID-ul în schimb.

10 feb. 2015 20:24:45
0
-2

Am întâmpinat această problemă și am rezolvat-o. Te rog să deschizi browserul la consolă, este clar că există o eroare de javascript. Am remediat eroarea și widget-urile sunt acum vizibile.

8 apr. 2016 19:32:05