2 votes

Obtenir une variable d'un fichier de modèle WordPress à un autre

J'ai un fichier de modèle (trendingPosts.php) pour afficher les 2 derniers articles avec le tag 'trending'. Dans la boucle while pour afficher ces 2 articles, je prends leurs ID dans un tableau pour pouvoir les exclure plus tard de la boucle principale de Wordpress:

query("showposts=2&tag=trending");
while($trending->have_posts()) : $trending->the_post();
$wp_query->in_the_loop = true;
$currentTrending[] = $post->ID;
?>

Le problème est que j'ai un index.php dans lequel j'inclus le loop.php via get_template_part( 'loop', 'index' ); et je n'arrive pas à obtenir le tableau $currentTrending[] que j'ai fait dans trendingPosts.php. J'ai besoin d'obtenir ce tableau dans mon loop.php

De plus, dans mon loop.php, j'exclus les 2 articles de la manière suivante.

if(have_posts()): while(have_posts()) : the_post(); 
    if( $post->ID == $currentTrending[0] || $post->ID == $currentTrending[1] ) continue;

Est-ce la bonne façon d'exclure des articles? Si quelqu'un a une meilleure façon de faire toute cette chose, merci de me le faire savoir. Évidemment, rien ne fonctionne tant que je ne parviens pas à obtenir ce tableau dans loop.php c'est donc le principal problème.

Merci! J'apprécie toute l'aide.

3voto

hakre Points 102271

Vous pouvez facilement créer des variables auxquelles vous pouvez accéder partout en utilisant le tableau superglobal $GLOBALS superglobal.

Une fois définie

$GLOBALS['mytheme_thisismyvar'] = 22;

Vous pouvez ensuite y accéder partout dans les autres modèles :

$myvar = $GLOBALS['mytheme_thisismyvar'];

Et l'utiliser là où cela convient. Cela fonctionne avec les sous-modèles quel que soit leur mode de chargement.

Comme tout le programme partage ce tableau superglobal, veillez à ne pas écraser les valeurs existantes.

1voto

Tak Points 5454

Essayez de déplacer votre code de tendance actuel vers functions.php du thème, de sorte que vous puissiez y accéder chaque fois que vous en avez besoin.

function getCurrentTrending() {
  $trending = new WP_Query();
  $trending->query("showposts=2&tag=trending");
  while($trending->have_posts()) : $trending->the_post();
    $wp_query->in_the_loop = true;
    $currentTrending[] = $post->ID;
  endwhile;
  return $currentTrending;
}

Vous pouvez ensuite récupérer ce tableau depuis n'importe quel fichier de modèle:

$currentTrending = getCurrentTrending();

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X