カテゴリコードで人気のある投稿を表示する方法
コードを追加しました
<?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();
?>
しかし、私のコードは正しくありません。
何か案は?
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();
}
?>