注目キーワード
  1. MacBook
  2. WordPress
  3. iPhone
category-popular-posts-2

WordPress Popular Postsを使用してカテゴリ別人気記事の表示方法!

category-popular-posts-2

category-popular-posts-2

WordPress Popular Postsを使用してカテゴリ別人気記事の表示方法です。

ブログ開始当初より、サイドバーにWordPress Popular Postsを使用して人気記事を表示していました。

WordPress Popular Posts を通常の設定で使用すると、ブログ全体でみた人気記事の表示になります。以前はその設定で使用していました。

当ブログのジャンルですが、以前はWordPressのカスタマイズやプラグイン紹介、iPhoneなどのApple製品を中心に気になる記事を書いてたのが、現在は、それらだけでなく、いろいろな気になるものを記事にし始め、カテゴリ分けも細かく行ったため、多方向に向いています。

以前に和洋風KAIさんの記事で「ブログでジャンルを絞れないならページで絞る。」というのを読んで、「それなら、カテゴリ別に人気記事を表示しよう!」と思ってみたものの、重い尻が上がらず現在に至ったわけですが、なんとかいろいろな方のサイトを参考に完成しました。

スポンサーリンク

カテゴリ別に人気記事の表示方法

仕様

まず、その名の通りにカテゴリ別に人気記事を表示させるのですが、カテゴリによっては記事数が少ないということもあり、人気記事数を5つにし、サイドバーの長さは変えたくはなかったので、最新記事(こちらはカテゴリに関係なく)を4つ追加表示する設定にしました。

また、シングルページ(個別記事)とカテゴリページを表示する場合のみで、トップページやアーカイブページなどは、以前と変わらずに全体の人気記事トップ10が表示される仕様になっています。

Code

まず、functions.phpにカテゴリを取得するコードを書きます。
※必ずfunctions.phpをいじる時は、いじる前にバックアップを忘れずにしましょう。以前に真っ白になったことがありますので…

//wp_head()実行時にget_current_category()を実行add_action('wp_head', 'get_current_category');// 現在のカテゴリを取得function get_current_category(){global $_curcat;$cate = null;if( is_category() ) {//カテゴリー表示だったら$cat_now = get_the_category();// 親の情報を$cat_nowに格納$cate = $cat_now[0];} else if (is_single() ) {//シングルページ表示だったら$cates = get_the_category();$i = 0;$use_category = 0;foreach ($cates as $cate) {//未分類を除外した配列の一番初めのカテゴリを選択if($cate->category_parent > 0 && $use_category == 0) {$use_category = $i;}$i++;}$cate = $cates[$use_category];}//カテゴリーのオブジェクトごと保持$_curcat = $cate;return $cate;}

次に、サイドバーのウィジェットでPHPが使用できるようにするために、プラグインを使用しました。

私は以前から、おすすめ記事をサイドバーのウィジェットを使用して表示させているので、PHPを使用できるプラグイン「PHP Code Widget(Executable PHP widget)」を利用しています。

php code

こんな感じにPHPが使用できます。

<?php global $_curcat;$caca=$_curcat->cat_ID;?><h2><?php echo get_cat_name($caca) ;?> 読まれている記事</h2><div class="popular-posts"><?php if (is_single() || is_category()) {get_mostpopular('order_by="views"&range=all&cat='.$caca.'&limit=5&stats_comments=0& stats_views=0&post_type=post&thumbnail_width=75&thumbnail_height=75&thumbnail_selection=usergenerated&post_start="<li class="p-posts">"&post_end="</li>"');}else{get_mostpopular('order_by="views"&range=all&limit=10&stats_comments=0& stats_views=0&post_type=post&thumbnail_width=75&thumbnail_height=75&thumbnail_selection=usergeneratedpost_start="<li class="p-posts">"&post_end="</li>"');}?></div><?php if (is_single() || is_category()):?><h3>最新記事</h3><ul class="new-entry"><?php$args=array( 'posts_per_page'=>4 );$my_query = new WP_Query($args);if( $my_query->have_posts() ) {  while ($my_query->have_posts()) : $my_query->the_post(); ?> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>"><?php the_post_thumbnail( array(75,75) ); //アイキャッチ画像を表示 ?></a> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>"><?php the_title(); ?></a>  </li><?php endwhile; wp_reset_postdata(); ?><?php } ?></ul><?php endif;?>

あとは、CSSで整えるだけです。

あとがき 

この度は、PLUSさんの「ワードプレスのサイドバーにカテゴリ別人気記事を表示する」と、Webデザインレシピさんの「WordPressのプラグイン、ウィジットなしで追加できる機能いろいろ:ソーシャルボタン多め」を参考にさせていただきました。大変わかりやすく勉強になりました。

※また、WordPress Popular Postsでサムネイル表示している場合は、脆弱性が見つかっているとのことで注意が必要です。PLUSさんのページに詳しい内容が載っています。

ページで絞るというのには、まだまだ課題は残っていますが、とりあえず一つは終了ということで… 

via : PLUS、Webデザインレシピ

category-popular-posts-2
いいね!&フォローで最新情報をお届けします!
スポンサーリンク