WP-PostViewsで、現在とそれ以外のカテゴリ人気記事(サムネイル付き)を表示
WordPress Popular Postsというプラグインを使って、サイドバーと記事終わりに人気記事を表示していたのですが、ちょっと思わしくなくなっちゃったのでWP-PostViewsというプラグインで同じ事ができないか試してみました。
WordPress Popular Postsにて
こんなレイアウトにしてました
これが、どうにももうちょい理想に届かなかった…!
WP-PostViewsにて
こちらのプラグインで同じレイアウトに挑戦!
こちらにあるとおり、WP-PostViewsは有効化するだけでカスタムフィールドにPVを記録していってくれるので、それを利用すればかんたんです!
現在のカテゴリの人気記事
出来上がりはこんなイメージ。
$now_id = wp_get_post_categories($post->ID,'fields=ids');
single.phpでwp_get_post_categories
という関数を使って、現在のカテゴリを配列で取得したら、
<?php global $post; $args = array( 'posts_per_page' => 5, 'category__in' => $now_id, 'meta_key' => 'views', 'orderby' => 'meta_value_num' ); $posts = get_posts( $args ); foreach( $posts as $post ) { setup_postdata($post); ?> <li><?php the_post_thumbnail( array(100, 100), array('alt'=>get_the_title()) ); ?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php } wp_reset_postdata(); ?>
こうやって書けば良いだけ。おおー、らくちんだ。CSSは先程のこちらをそのまま。
他カテゴリの人気記事
出来上がりはこんなイメージ。
最初、現在のカテゴリ以外のカテゴリIDを配列で取得…、っていうのをどうやったらいいのか悩んで、
<?php //現在以外のカテゴリ-IDを配列で取得 $now_id = wp_get_post_categories($post->ID,'fields=ids'); $args = array( 'exclude'=>$now_id, 'fields'=>'ids' ); $terms = get_terms('category', $args); ?>
このように$terms
に特定以外のカテゴリID配列が入るようにがんばりました。
でもそんなことしなくても、現在以外のカテゴリは、
<?php global $post; $args = array( 'posts_per_page' => 5, 'category__not_in' => $now_id, 'meta_key' => 'views', 'orderby' => 'meta_value_num' ); $posts = get_posts( $args ); foreach( $posts as $post ) { setup_postdata($post); ?> <li><?php the_post_thumbnail( array(100, 100), array('alt'=>get_the_title()) ); ?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php } wp_reset_postdata(); ?>
こうやってnot_inで書いてあげれば良いだけ! こんなに簡単に出来るんですね…(*´ω`*)
2件のコメント
大変参考になりました。
よろしければ教えていただきたいのですが、
サムネイルと記事タイトルに加え、記事に設定したタグ名を表示するにはwp-postviews.phpにどんな記述を加えればよいのでしょうか?
bumさん、コメントありがとうございます。
と書けば
%TAGS%
で出力できるようになります。当初
the_tags()
が使えれば楽かなと思ったのですが、投稿IDの指定が出来なさそうなのでget_the_tags()
を使って指定記事のタグ情報を配列に格納して、name
とslug
を取り出してリンクの形に生成して出力、という形にしています。WordPress › フォーラム » the_tags()の表示順カスタマイズこちらを参考にさせていただきました。
ちなみに蛇足かもですが、リンク無しなら
このように書けば良いかと思います。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。