HOME > ビジネスハック > ワードプレスのサイドバーにカテゴリ別人気記事を表示する
2012/10/15 (2016/09/14更新) タグ: , ,

ワードプレスのサイドバーにカテゴリ別人気記事を表示する

最近ちょこちょことブログまわりをいじってます。どうもこういうのが好きみたいです。今回は、サイドバーではWoredpress Popular Postsというプラグインを使って人気記事を表示するようにしていますが、ここを見ている記事やカテゴリによって、変更してみました。

SPONSOR

複数のジャンルを取り扱うブログ

PLUSのブログもそうですが、iPhone、Web、プログラム、関係のないコラムなどなど私が興味を持っている内容を記事として配信しています。しかし、iPhoneに興味がある人がWebの技術にも興味を持っているかと聞かれるとそうではありません。

つまり、iPhoneの記事を読んでいる人に、サイドバーにWeb技術関連の記事を置いたとしても役に立たないということです。逆もしかりです。せっかく訪問してくれていますので、過去に書いた記事も読んで欲しいところ。

そこで、読んでいる記事のカテゴリによって人気記事も変更したら、興味のある記事がずらーっと出てきて良さそうです。

Woredpress Popular Postsの導入

まずはWoredpress Popular Postsプラグインをインストール。しかし普通にインストールすると、全てのカテゴリの人気記事しか表示されません。

インストール・有効化して、しばらくすると集計結果が表示されます。これは「設定」→「Woredpress Popular Posts」から確認することができます。

(参考) WordPress Popular Postsでサムネイルを表示している方は要注意!

ウィジェットでPHPを使えるようにする

後ほど、ウィジェット内にPHPを記述して、カテゴリ毎に判別して記事一覧を出すようにするので、PHPが使えるように「Exec-PHP Plugin」というプラグインをインストールします。Exec-PHP Pluginを入れると、投稿記事内やウィジェットでPHPプログラムを記述できるようになります。

現在のカテゴリIDを取得する関数を用意

まず、記事別、カテゴリ別にカテゴリIDを取得するためfunction.phpに関数を追加します。このファイルは使用しているテーマ内に入っているはずです。以下のコードを追加してください。

//wp_head()実行時にget_current_category()を実行
add_action('wp_head', 'get_current_category');

// 現在のカテゴリを取得
function get_current_category()
{
	global $_curcat;
	$cate = null;
	if( is_category() ) {
		//カテゴリー表示だったら
		//$now_cate = get_query_var('cat');
		//$cate = get_category($now_cate);

		$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;
}

(参考) シングルやアーカイブで現在属するカテゴリーを取得する方法(WordPress)

いよいよウィジェット内に人気記事を配置

さて、ここまできたら、いよいよウィジェットに人気記事を追加します。

ウィジェット内に下のプログラムを入れます。

<div class="pop">
<?php
global $_curcat;
$caca=$_curcat->cat_ID;

if (is_home() && $caca=="") {
get_mostpopular('range=weekly&order_by=views&limit=10&stats_comments=0& stats_views=1&pages=0&thumbnail_width=60&thumbnail_height=40&thumbnail_selection=usergenerated');
}else{
get_mostpopular('range=weekly&order_by=views&cat='.$caca.'&limit=10&stats_comments=0& stats_views=1&pages=0&thumbnail_width=60&thumbnail_height=40&thumbnail_selection=usergenerated');
}
?>
</div>

簡単に解説します。$cacaには、さきほどfunction.phpに追加した関数より、カテゴリIDが返ってきます。

次に
if (is_home() && $caca==””) {
にてトップページかどうかを判別してトップページだったら、カテゴリに関係なく人気記事一覧を表示します。逆に、そうでなければ指定したカテゴリ内の人気記事を表示します。

get_mostpopularはWoredpress Popular Postsに用意されている関数で、()の中にプロパティを指定することができます。

この例でいうと、range=weeklyが週間、order_by=viewsが閲覧数で並び替え、&catが指定したカテゴリIDのみ、limitは何件表示するか、stats_commentsはコメント数を表示するかどうか0で表示しない、あとはサムネイルの大きさ指定など。

詳しくはWoredpress Popular Postsの設定ページのFAQに各パラメータの説明があります。

後は表示されたページのソースを見て、CSSをカスタマイズすれば完了です。

この記事をシェアする

イリテクの最新記事をお届けします

イリテクの最新情報をチェック!
  • follow us in feedly
    RSSで最新記事を読む

イリテクで開発したサービス

請求書作成業務をもっとかんたんに。見積請求書の作成だけでなく、郵送代行、メール送信、PDFダウンロードなどバックオフィスを効率化。

詳しくはこちら

こちらの記事もおすすめです

SPONSER

記事を書いている人
入江 慎吾
イリテク(株)代表。webシステム、デザイン、iOSアプリ開発に携わって15年目。ディレクションもデザインもやるプログラマ。複数の企業と専属エンジニア契約中。自社で見積請求CLOUD PAPER運営。iPhoneアプリ全国総合ランキング3位を記録。イリテクブログは月間約5万PV。(もっと詳しく
SPONSOR
最新記事
Facebook
Twitter