web-dev-qa-db-fra.com

Comment appeler des publications avec une certaine balise?

J'utilise ceci pour appeler des posts:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$per_page = get_option('to_count_archives');
query_posts("posts_per_page=".$per_page."&paged=".$paged."&cat=".$cat);
if (have_posts())
?>
<?php while (have_posts()) : the_post(); ?>

Et cela fonctionne très bien pour les catégories. Mais sur les pages d'archives générées pour les balises, il affiche TOUTES les publications, pas seulement les publications avec une balise spécifique . Je vais créer un fichier séparé archives.php et category.php.

Je dois conserver la partie du code to_count_archives car elle appelle le nombre de publications par page.

J'apprécie toute aide pour réécrire le code ci-dessus pour fonctionner correctement.

1
AndrettiMilas

C'est parce que lorsque vous appelez query_posts, vous écrasez la requête d'origine par une nouvelle, vous devez obtenir la requête d'origine et réinitialiser les éléments que vous souhaitez modifier.

global $query_string;
$per_page = get_option( 'to_count_archives' );
query_posts( $query_string . '&posts_per_page=' . $per_page );
1
Milo

Pourquoi ne pas utiliser WP_Query et faire quelque chose comme:

// The Query
$the_query = new WP_Query(  array( 'posts_per_page' => 5, 'tag' => 'THETAG' ) );

// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

Vous pouvez également faire la même chose pour la catégorie. J'espère avoir compris la question que votre exemple de code ci-dessus m'a confondu. Je trouve que WP_Query est plus facile à utiliser :)

0
Brooke.