- Débuter avec Wordpress - http://www.woodymood-dev.net/cms/wordpress -

La globale $post change avec les widgets

Posted By Anthony On 9 mars 2009 @ 15:39 In Développement | No Comments

    En voulant afficher les articles sur le même sujet dans un widget en colonne latérale (avec yarrp [1]), je me suis aperçu que les résultats étaient différents de ceux affichés directement en dessous de l’article. En investiguant un peu, j’ai compris que le widget utilisait une variable global $post qui ne représentait plus le post principal, mais qu’elle avait été changée durant l’affichage des widgets…

    Sans doute que c’est un fonctionnement normal de wordpress et que c’est à chaque widget de renormaliser sa variable $post…

    Je n’ai pas trouvé de solution « propre » à cette question et je me suis dit que j’allais créer une copie de $post dans la boucle principale de single.php :

    if (have_posts()) : the_post(); update_post_caches($posts); 
    // copie
    $global_saved_post = $post;
    ...

    puis que j’allais littéralement réinitialiser $post lors de l’affichage des widgets (fonction dynamic_sidebar de widgets.php) :

    function dynamic_sidebar($index = 1) {
    // je rajoute $post comme variable globale à cette fonction
    global $wp_registered_sidebars, $wp_registered_widgets, $post;
    ...
    foreach ( (array) $sidebars_widgets[$index] as $id ) {
      // réinitialisation avant l'affichage de chaque widget
      if ( is_single() && isset($GLOBALS['global_saved_post']) ) {
        $post = $GLOBALS['global_saved_post'];
      }
    ...

    Si vous avez une meilleure solution qui ne modifie pas le noyau de WP je suis preneur !

    Suggestions de lecture


    Article printed from Débuter avec Wordpress: http://www.woodymood-dev.net/cms/wordpress

    URL to article: http://www.woodymood-dev.net/cms/wordpress/fr/2009/03/09/global-post-change-avec-les-widgets/

    URLs in this post:

    [1] yarrp: http://www.woodymood-dev.net/cms/wordpress/cms/wordpress/fr/2009/02/08/articles-meme-sujet/

    [2] Comparer des fichiers: http://www.woodymood-dev.net/cms/wordpress/fr/2009/02/10/comparer-des-fichiers/

    [3] Créer un plugin: http://www.woodymood-dev.net/cms/wordpress/fr/2009/03/25/creer-un-plugin/

    [4] Créer un plugin: 2ième partie: http://www.woodymood-dev.net/cms/wordpress/fr/2009/04/02/creer-un-plugin-2ieme-partie/

    Copyright © 2009 Débuter avec Wordpress. All rights reserved.