Widgets no se muestran en el personalizador del tema
Estoy desarrollando un nuevo tema y estoy usando varios sidebars en este tema. Todo funciona bien, pero los widgets no aparecen en la sección del personalizador de temas. Todos los widgets funcionan correctamente en la sección "apariencia -> widgets" pero no en "apariencia -> personalizar". Estoy usando WordPress 3.9.1.
Así es como los declaré en functions.php
if(function_exists('register_sidebar'))
{
register_sidebar ( array (
'name' => 'Área de Widgets 1',
'id' => 'widget-1',
'description' => 'Área de Widgets 1.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Área de Widgets 2',
'id' => 'widget-2',
'description' => 'Área de Widgets 2.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Área de Widgets 3',
'id' => 'widget-3',
'description' => 'Área de Widgets 3.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Área de Widgets 4',
'id' => 'widget-4',
'description' => 'Área de Widgets 4.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
}
Y así es como los llamo.
<?php
if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Área de Widgets 1' )) :
endif;?>
Se muestra bien cuando tengo un área de widgets, pero tan pronto como agrego múltiples áreas, desaparece del personalizador.
Los widgets SÍ aparecen en el Personalizador, pero solo si estás en la página donde se utilizan.
Por ejemplo, tengo una barra lateral para la página de Archivo. Cuando estoy en el Personalizador y en la página de inicio, esa barra lateral no aparece. Pero si navego a una página de archivo mientras estoy en el Personalizador, entonces aparece en el área de widgets.

Esta es la solución real a tu problema:
Todo lo que tienes que hacer es asegurarte de agregar esta función al pie de página y antes de la etiqueta de cierre </body>
:
<?php wp_footer();?>
También asegúrate de tener <?php wp_head();?>
antes de la etiqueta </head>
. Espero que esto te ayude...

Sé que lo preguntaste hace mucho tiempo, pero acabo de tener el mismo problema y finalmente descubrí la causa. En mi archivo functions.php
, había desregistrado jQuery (wp_deregister_script('jquery')
). Aparentemente, esto hace que los widgets no funcionen en el personalizador, aunque mi página seguía cargando jQuery (a través de wp_enqueue_script
).
Para solucionar el problema (asumiendo que tienes el mismo problema que yo), necesitas volver a registrar jQuery llamando a wp_register_script('jquery', ('url_to_jquery'), false, '1.11.1'[o cualquiera que sea tu versión de jQuery])
.

El widget nunca aparecerá si lo llamas por su nombre en lugar de llamarlo por su ID.
Por favor, verifica en sidebar.php o footer.php, donde deseas mostrar tu widget, si el ID de la barra lateral que registraste en functions.php es el mismo o no.
Si usaste un ID de widget como 'algo' en functions.php pero 'otra-cosa' en el lugar donde quieres que aparezca tu widget, ¡entonces no funcionará!
Ejemplo:
Si registras tu widget en functions.php usando "page-sidebar", entonces debes llamar a tu widget usando <?php dynamic_sidebar( 'page-sidebar' ); ?>
en tu archivo sidebar o footer.

Creo que ese no es el problema. Está funcionando bien, el único problema es que esos widgets no se muestran en la sección Apariencia -> Personalizar.

Ve y lee dynamic_sidebar
. "index
(integer/string) (opcional) Nombre o ID de la barra lateral dinámica."
