web-dev-qa-db-ja.com

カテゴリコードで人気の記事を表示

カテゴリコードで人気のある投稿を表示する方法

コードを追加しました

<?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(); 
?>

しかし、私のコードは正しくありません。

何か案は?

1
DinhTv

2つのクエリを1つにまとめて実行しています。 query_postsと一緒には絶対に実行しないでください。決して使うべきではない query_posts

注:この機能は、プラグインやテーマで使用するためのものではありません。後で説明するように、メインクエリを変更するためのより優れた、より高性能なオプションがあります。 query_posts()は、ページのメインクエリを新しいクエリインスタンスに置き換えることによって変更する、非常に単純で問題の多い方法です。これは非効率的で(SQLクエリを再実行する)、状況によっては完全に失敗する可能性があります(特に投稿ページ付けを扱うときによくあります)。

カスタムクエリーには、 WP_Query または get_posts のみを使用してください。クエリは次のような形式になります。

<?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