素直に get_posts() を使った方が良いと思います。この場合、人気=コメントの多い順です。
★ functions.php
function comments_rank_where( $where = '' ) {
$where .= " AND comment_count > 0";
return $where;
}
<?php
global $post;
$args = array(
'orderby' => 'comment_count',
'order' => 'DESC',
'suppress_filters' => false,
'numberposts' => 3
);
add_filter( 'posts_where' , 'comments_rank_where' , 10 , 1 );
$my_posts = get_posts( $args );
remove_filter( 'posts_where', 'comments_rank_where' );
if ($my_posts) :
echo '<ul>'.PHP_EOL;
foreach ($my_posts as $post) :
setup_postdata($post);
$commentcount = $post->comment_count;
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php echo $commentcount; ?></li>
<?php
endforeach;
wp_reset_postdata();
echo '</ul>'.PHP_EOL;
endif;
?>
※ Popular Posts や Post Views は、コメントの多さで人気を決めているのではないと思いますが・・。
pluto1234さん、ご返信ありがとうございます。
今の書き方ですと人気=コメントとなりますね。すいません、他サイトからひっぱてきたソースになりますので、誤解が生じたかもしれません。
出来れば、プラグインを使わずに、【アクセス数に応じた】人気記事を表示したいのですが、教えて頂けませんでしょうか。
WordPressの基本機能ではページごとのアクセス数はカウントしていないので、single.phpに読み込まれる度にカスタムフィールドにアクセス数をカウントしていって、そのカスタムフィールドの数字順に取得とかどうでしょうか?
ただしある期間中とかのアクセス数を取得とかアクセスカウントを一斉リセットとかの処理をさせるなら一気に面倒なりそうですが。
*個人的にはプラグインの表示部分をカスタマイズしたほうがはやいんじゃないかなーと思いますが。
http://ja.forums.wordpress.org/topic/5294?replies=6
ここに、WP-PostViews でカウントアップした値(値はカスタムフィールド ‘views’ に保存される)を使って、ランキングする方法が載っています。
WP-PostViews:カウントアップのために使用
ランキング表示部:自由にカスタマイズ
gogowebさん
ご返信ありがとうございます。カスタムフィールドの数字順で取得、なるほど。色々手段を考えたのですがやはりプラグインをカスタマイズして、出来る限りのことをやろうと思います。あらため、ご助言ありがとございました。
pluti1234
WP-PostViewsにそんな機能があるのですね。お調べいただき、ありがとうございます。WP-PostViewsのview保存を利用する仕組みを今からやってみます。それで今の私の実力で難しいようであれば、素直に諦め、プラグインを使った分かりやすいデザインに変えようと思います。本当にご助言ありがとうございました。
既に解決しているようですが…
Automattic社謹製のJetpackプラグインを使うとアクセスに応じた人気記事の表示が可能です。
多機能なプラグイン機能の一つに統計情報があります。
wordpress.comのアカウントが必要など手間はかかりますがいかがでしょう。
Jetpackにはウイジェットで表示する機能しかありませんが、APIを使用することでカスタマイズが可能です。
Popular posts by view with Jetpack
Jetpack by WordPress.com