Widgets no se muestran en el personalizador del tema

11 jun 2014, 10:13:55
Vistas: 16.4K
Votos: 4

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.

3
Comentarios

¿Has intentado cambiar a uno de los temas incluidos para verificar si el error aún existe? También puedes intentar desactivar tus plugins uno por uno. Por cierto, no necesitas verificar si la función existe (if(function_exists('register_sidebar'))) al registrar una barra lateral.

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

El error solo aparece con mi tema, pero extrañamente estoy usando el mismo código que se usa en el tema 2014.

AKR AKR
11 jun 2014 10:41:48

Si estás trabajando en un nuevo tema utilizando twenty fourteen como base, asegúrate de que no haya conflictos con los ID's. Asegúrate de no registrar una barra lateral con el mismo ID dos veces.

Pieter Goosen Pieter Goosen
11 jun 2014 10:48:16
Todas las respuestas a la pregunta 6
2

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.

16 dic 2014 09:39:51
Comentarios

Señor, usted es un caballero y un erudito... y me ha salvado algunos cabellos de mi cabeza :) ¡Gracias!

sleeper sleeper
27 jul 2015 07:35:38

tantísimo tiempo perdido, ¿por qué no encontré esta respuesta antes?

TarranJones TarranJones
25 feb 2016 11:19:18
0

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

30 jul 2017 08:27:18
0

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

23 ene 2015 00:24:13
2

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.

11 jun 2014 10:38:20
Comentarios

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.

AKR AKR
11 jun 2014 10:46:26

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

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

@PieterGoosen tiene razón, en dynamic_sidebar ( 'Widget Area 1' )) estás llamando al nombre, no al ID, que es widget-1.

Intenta usar el ID en su lugar.

10 feb 2015 20:24:45
0
-2

Encontré este problema y lo solucioné. Por favor, abre tu navegador a la consola, es claro que hay un error de javascript. Corregí el error y los widgets se muestran.

8 abr 2016 19:32:05