web-dev-qa-db-fra.com

Les widgets ne s'affichent pas dans le personnaliseur de thème

Je développe un nouveau thème et j'utilise plusieurs barres latérales dans ce thème. Tout fonctionne bien, mais les widgets ne s'affichent pas dans la section de personnalisation du thème. Tous les widgets fonctionnent correctement dans la section "apparence -> widgets" mais pas dans "apparence -> personnaliser". J'utilise wordpress 3.9.1.

Voici comment je les ai déclarés dans functions.php

if(function_exists('register_sidebar'))
 {

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



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


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

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

}

Et c'est comme ça que je les appelle.

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

endif;?>

Il montre bien quand j'ai une zone de widget, mais dès que j'en ajoute plusieurs, elle disparaît du customizer.

3
AKR

Les widgets apparaissent dans le personnaliseur, mais uniquement si vous êtes sur la page sur laquelle ils sont utilisés.

Par exemple, j'ai une barre latérale pour la page Archive. Lorsque je suis dans le Customizer et sur la page d'accueil, cette barre latérale n'apparaît pas. Mais si je navigue vers une page d'archive dans le personnaliseur, elle apparaît alors dans la zone du widget.

9
Matt Cromwell

Je sais que vous avez posé la question il y a longtemps, mais je viens d'avoir le même problème et j'ai finalement compris le problème. Dans mon fichier functions.php, jQuery avait été désenregistré (wp_deregister_script('jquery')). Cela a apparemment pour effet que les widgets ne fonctionnent pas dans le personnaliseur, même si ma page était toujours en train de charger jquery (via wp_enqueue_script).

Afin de résoudre le problème (en supposant que vous rencontrez le même problème que moi), vous devez ré-enregistrer jquery en appelant wp_register_script('jquery', ('url_to_jquery'), false, '1.11.1'[or whatever your jquery version is]).

1
manwill

@PieterGoosen est correct, dans dynamic_sidebar ( 'Widget Area 1' )), vous appelez le nom et non l'ID, qui est widget-1..

Essayez d'utiliser l'ID à la place.

0
jose_nation

C’est la vraie solution à votre problème: il suffit de s’assurer que vous avez ajouté cette fonction au pied de page et avant la balise de fermeture </body>:

<?php wp_footer();?>

assurez-vous également que vous avez la fonction <?php wp_header();?> avant la balise </head>. J'espère cette aide

0
shadi

Widget n'apparaitra jamais par son nom ni par son identifiant.

Veuillez cocher sidebar.php ou footer.php pour indiquer à votre widget que l’ID de la barre latérale que vous enregistrez dans la page functions.php est identique ou non.

Si vous utilisez votre identifiant de widget "quelque chose" dans functions.php et "quelque chose d'autre" à l'endroit où vous souhaitez montrer que votre widget est apparu que rien n'a fonctionné!

Exemple:

Si vous enregistrez votre widget dans functions.php en utilisant "page-sidebar", vous devez appeler votre widget en utilisant <?php dynamic_sidebar( 'page-sidebar' ); ?> dans votre barre latérale ou page de pied de page.

0
Ariful Islam Shaon