Widgets non visualizzati nel personalizzatore del tema

11 giu 2014, 10:13:55
Visualizzazioni: 16.4K
Voti: 4

Sto sviluppando un nuovo tema e utilizzo diverse sidebar. Il funzionamento è corretto ma i widget non compaiono nel personalizzatore del tema. Funzionano normalmente in "Aspetto → Widget" ma non in "Aspetto → Personalizza". Utilizzo WordPress 3.9.1.

Ecco la dichiarazione nel file functions.php:

if(function_exists('register_sidebar')) 
{
    register_sidebar(array(
        'name' => 'Area Widget 1',
        'id' => 'widget-1',
        'description' => 'Area 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' => 'Area Widget 2',
        'id' => 'widget-2',
        'description' => 'Area 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' => 'Area Widget 3',
        'id' => 'widget-3',
        'description' => 'Area 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' => 'Area Widget 4',
        'id' => 'widget-4',
        'description' => 'Area Widget 4.',
        'before_widget' => '<div id="%2$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3>',
        'after_title' => '</h3>',
    ));
}

Codice di chiamata nelle template:

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

Il problema si manifesta solo con multiple aree widget: con una singola sidebar tutto funziona correttamente nel customizer.

3
Commenti

Hai provato a passare a uno dei temi inclusi per verificare se l'errore persiste. Puoi anche provare a disattivare i tuoi plugin uno per uno. A proposito, non è necessario verificare se la funzione esiste (if(function_exists('register_sidebar'))) quando registri una sidebar.

Pieter Goosen Pieter Goosen
11 giu 2014 10:37:41

L'errore compare solo con il mio tema, ma stranamente sto usando lo stesso codice utilizzato nel tema 2014.

AKR AKR
11 giu 2014 10:41:48

Se stai lavorando a un nuovo tema usando twenty fourteen come base, assicurati solo che non ci siano conflitti con gli ID. Accertati di non registrare una sidebar con lo stesso ID due volte

Pieter Goosen Pieter Goosen
11 giu 2014 10:48:16
Tutte le risposte alla domanda 6
2

I widget COMPAIONO nel Customizer, ma solo se sei sulla pagina in cui vengono utilizzati.

Ad esempio, ho una sidebar per la pagina Archivio. Quando sono nel Customizer e sono sulla homepage, quella sidebar non viene visualizzata. Ma se navigo verso una pagina archivio mentre sono nel Customizer, allora compare nell'area widget.

16 dic 2014 09:39:51
Commenti

Signore, Lei è un gentiluomo e uno studioso... e mi ha salvato qualche ciocca di capelli :) Grazie!

sleeper sleeper
27 lug 2015 07:35:38

ho sprecato tantissimo tempo, perché non ho trovato prima questa risposta.

TarranJones TarranJones
25 feb 2016 11:19:18
0

Questa è la vera soluzione al tuo problema: Tutto quello che devi fare è assicurarti di aggiungere questa funzione nel footer e prima del tag di chiusura </body>:

<?php wp_footer();?>

assicurati anche di avere <?php wp_head();?> prima del tag </head>. Spero che questo ti aiuti......

30 lug 2017 08:27:18
0

So che hai fatto questa domanda molto tempo fa, ma ho avuto lo stesso problema e finalmente ho capito qual era il problema. Nel mio file functions.php, avevo deregistrato jQuery (wp_deregister_script('jquery')). Questo apparentemente fa sì che i widget non funzionino nel customizer, anche se la mia pagina continuava a caricare jQuery (tramite wp_enqueue_script).

Per risolvere il problema (supponendo che tu abbia lo stesso problema che ho avuto io), devi registrare nuovamente jQuery chiamando wp_register_script('jquery', ('url_to_jquery'), false, '1.11.1'[o qualunque sia la tua versione di jQuery]).

23 gen 2015 00:24:13
2

Il widget non verrà mai visualizzato se chiamato per nome, è necessario chiamarlo per ID.

Controlla in sidebar.php o footer.php, dove desideri far apparire il tuo widget, se l'ID della sidebar registrato in functions.php corrisponde o meno.

Se usi l'ID del widget 'qualcosa' in functions.php e 'qualcos-altro' nel punto in cui vuoi far apparire il widget, allora non funzionerà nulla!

Esempio:

Se registri il tuo widget in functions.php usando "page-sidebar" allora devi chiamare il widget con <?php dynamic_sidebar( 'page-sidebar' ); ?> nella tua sidebar o nella pagina del footer.

11 giu 2014 10:38:20
Commenti

Penso che non sia quello il problema. Funziona tutto correttamente, l'unico problema è che quei widget non vengono visualizzati nella sezione Aspetto -> Personalizza.

AKR AKR
11 giu 2014 10:46:26

Vai a leggere la documentazione di dynamic_sidebar. "index (intero/stringa) (opzionale) Nome o ID della sidebar dinamica."

Pieter Goosen Pieter Goosen
11 giu 2014 10:46:29
0

@PieterGoosen ha ragione, in dynamic_sidebar ( 'Widget Area 1' )) stai chiamando il nome, non l'ID, che è widget-1.

Prova a usare l'ID invece.

10 feb 2015 20:24:45
0
-2

Ho riscontrato questo problema e l'ho risolto. Per favore apri il browser nella console, è chiaro che c'è un errore javascript. Ho corretto l'errore e i widget sono ora visibili

8 apr 2016 19:32:05