web-dev-qa-db-fra.com

Afficher les messages populaires par code de catégorie

Comment afficher les messages populaires par code de catégorie

J'ai ajouter du code

<?php 
$popularpost  = new WP_Query( array( 
    'cat'=> 2, 
    'posts_per_page' => 1, 
    'meta_key' => 'post_views_count', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC'  
) ); 
query_posts($popularpost); 
if (have_posts()) : 
    while (have_posts()) : 
        the_post(); ?>
        <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php 
    endwhile; 
endif; 
wp_reset_query(); 
?>

mais mon code n'est pas correct.

Des idées?

1
DinhTv

Vous exécutez deux requêtes en une. Vous ne devriez en exécuter qu’un seul, et certainement pas avec query_posts. Vous ne devriez jamais utiliser query_posts

Remarque: Cette fonction n'est pas destinée à être utilisée par des plugins ou des thèmes. Comme expliqué plus tard, il existe de meilleures options plus performantes pour modifier la requête principale. query_posts () est une façon trop simpliste et problématique de modifier la requête principale d'une page en la remplaçant par une nouvelle instance de la requête. Il est inefficace (ré-exécute les requêtes SQL) et échouera carrément dans certaines circonstances (particulièrement lorsqu'il s'agit de pagination de publications).

Vous ne devez utiliser WP_Query ou get_posts pour des requêtes personnalisées. Votre requête devrait avoir le format suivant

<?php 
$popularpost  = new WP_Query( array( 
    'cat'=> 2, 
    'posts_per_page' => 1, 
    'meta_key' => 'post_views_count', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC'  
) );

if ($popularpost->have_posts()) {
    while ($popularpost->have_posts()) {
        $popularpost->the_post(); ?>
        <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php 
    } 
    wp_reset_postdata();
} 
?>
0
Pieter Goosen