Widgets non visualizzati nel personalizzatore del tema
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.

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.

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......

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])
.

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.

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

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