Débogage du thème WordPress : la barre latérale du plug-in empêche l’affichage de la barre latérale d’origine

Publié par Jean-Michel le

J’ai déterminé que mon code de plugin fonctionne parfaitement bien dans d’autres thèmes, mais dans le thème : Magazinly, le plugin de barre latérale que j’ai écrit, empêche la barre latérale de s’afficher. Grâce au débogage, j’ai déterminé que le registre des barres latérales et deux tableaux de barres latérales sont créés, mais l’un n’est pas rempli.

Voici le code du plug-in :

register_sidebar(array(
        'name'=>'Bottom Widget Area',
        'id'=> 'bottom-widget',
        'before_widget' => '<aside class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<div class="block-title"><span>',
        'after_title' => '</span></div>'
    ));

include 'add_bottom_bar.php';

C’est add_bottom_bar.php :

    // Register Bottom_Bar
function add_bottom_widget(){

    echo '<div class='bottombar'>';
    if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('bottom-widget')) :
        endif;
    echo '</div>';
}

 add_action ('get_footer', 'add_bottom_widget');


// Register style sheet.
add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );


// Register style sheet.
function register_plugin_styles() {
    wp_register_style( 'custom_widget_final', plugins_url( 'custom_widget_final/css/bottom_bar.css' ) );
    wp_enqueue_style( 'custom_widget_final' );
}

Et voici le code de la barre latérale dans Magazinly :

http://pastebin.com/eJu7Wk3C

Il y a aussi ce code qui semble utiliser ce que le créateur du thème a appelé « barre latérale dynamique » pour… eh bien… j’imagine… rendre les barres latérales dynamiques :

http://pastebin.com/T0LW3QTS

Mais, je suppose que c’est le coupable : le thème Magazinly utilise ce chargeur de barre latérale, mais cela semble exagéré. Je suppose que le widget de la barre latérale que j’enregistre perturbe ce chargeur de barre latérale.

http://pastebin.com/jCtvjVqC

Avec tout le code présenté, ma prochaine question est : quelles sont mes options ? J’ai besoin d’ajouter des positions de widget à trois sites, tous utilisant le même thème, mais en préservant la barre latérale. Actuellement, si j’active mon plugin, la barre latérale ne se charge pas, mais le plugin fonctionne. Si je désactive le plugin, la barre latérale revient. Les deux sont importants, mais je ne peux pas modifier le thème, et créer un thème enfant semble excessif. Je préférerais déboguer ce thème et utiliser des widgets.

Voici ce que j’ai essayé /testé :

  1. Testé ce plugin sur quatre autres sites WP. Pas d’issues. Les barres latérales s’affichent bien. Le plugin fonctionne comme un charme.

  2. Sur le site problématique : wp_debug, défini sur true… ne génère aucune erreur, mais donne un avertissement pour chacune des barres latérales natives du thème (pas d’identifiant défini, ce qui est une chose antérieure à 4.1). A ma connaissance, cela n’affecte rien.

  3. J’ai supprimé l’inclusion en bas, juste pour préciser où le problème pourrait se trouver dans mon code. J’ai déterminé que même lorsque la mise en file d’attente CSS est désactivée, ou même si add_bottom_bar.php n’est pas inclus, les barres latérales natives du thème se cassent toujours. Cela me montre très clairement qu’il y a un conflit register_sidebar.

  4. J’ai regardé la source lorsque le plugin est activé et lorsqu’il est désactivé. Je trouve après avoir différent la source, lorsque le plugin est activé, les barres latérales ne s’affichent pas dans la source, donc ce n’est pas une chose css/js, pour autant que je sache.

Quelle solution de contournement pourrait-il y avoir pour cela ? Un widget améliorerait considérablement le flux de travail, mais je commence à considérer qu’abandonner la situation de la barre latérale/widget pourrait être plus intelligent.

Des conseils, des astuces ou des idées ? Je sais que ma question est un peu générale, mais j’ai heurté un mur de briques, ici, en essayant de rester sans intervention avec ce code de thème.

Toute aide serait très appréciée! Merci!

Solution n°1 trouvée

D’accord. Deviner.

add_action( 'widgets_init', 'bottom-widget' );

Nécessaire pour initialiser le widget juste après l’enregistrement de la barre latérale.

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *