web-dev-qa-db-fra.com

Comment réinitialiser cette requête wp_list_categories?

Comment réinitialiser une requête générant une liste de catégories avec wp_list_categories?

La requête ci-dessous crée une liste de catégories sur deux colonnes qui est ensuite affichée avec le deuxième bloc de code.

J'utilise deux de ces requêtes (avec différentes chaînes d'inclusion de catégorie) dans un onglet jQuery pour afficher différentes listes de catégories.

Le problème, c'est que la première requête doit être réinitialisée, car le deuxième onglet affiche les deux listes de catégories plutôt que les catégories de la seconde requête.

J'ai essayé <?php wp_reset_query();?> mais cela ne fonctionne que pour la boucle WP. Quelqu'un a des idées?

    <?php
    $cats = explode
    ("<br />",wp_list_categories('title_li=&echo=0&depth=1&style=none&include=12,13,14,15,16'));
    $cat_n = count($cats) - 1;
    for ($i=0;$i<$cat_n;$i++):
    if ($i<$cat_n/2):
    $cat_left = $cat_left.'<li>'.$cats[$i].'</li>';
    elseif ($i>=$cat_n/2):
    $cat_right = $cat_right.'<li>'.$cats[$i].'</li>';
    endif; endfor; ?>

    <ul class="leftcatcolumn">
    <?php echo $cat_left;?>
    </ul>
    <ul class="rightcatcolumn">
    <?php echo $cat_right;?>
    </ul>
1
markratledge

wp_list_categories() est une fonction simple qui renvoie (ou echos, en fonction du paramètre) une liste de liens vers des archives de catégories. Il ne doit pas être réinitialisé.

Lorsque vous créez une nouvelle instance de la classe WP_Query , vous devez réinitialiser postdata, car balises de modèle sinon utilisez cette requête et non la requête principale.

Vous avez dit:

J'utilise deux de ces requêtes (avec des chaînes d'inclusion de catégories différentes) ...

Je suppose, la "catégorie inclure des chaînes" sont la seule différence dans les deux requêtes?!

Lors de la deuxième utilisation de cet extrait, les variables $cat_left et $cat_right sont les coupables. Elles ne sont pas écrasées, les nouvelles valeurs sont ajoutées à la fin du tableau.

Renommez-les en $cat_left_2 et $cat_right_2 la deuxième fois ou définissez-les sur NULL entre:

// first list here
$cat_left = NULL;
$cat_right = NULL;
// second list here
3
Johannes Pille