- 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 !
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/
Click here to print.
Copyright © 2009 Débuter avec Wordpress. All rights reserved.