WordPressで親カテゴリー別人気記事を表示

WordPressで親カテゴリー別人気記事を表示

このブログ、大きく分けると3つのテーマで更新してます
となると人気記事を全体にするとなんか変な感じになるんです

プラス、カテゴリーを深くしているので末端カテゴリーの人気記事を味気ない。。。
そんなわけで、第一階層のカテゴリー別で人気記事を表示するようにしてみました

WordPress Popular Postsに依存しますので、インストールしている人向けになります

functions.php に追記する

// カテゴリIDの取得
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;
}

// カテゴリーの親を取得
function get_top_category( $cat_id, $ancestors = array() ) {
	$cat = get_category( $cat_id );
	$ancestors = $cat;
	if ( $cat->parent != 0 ) {
		$ancestors = get_top_category( $cat->parent, $ancestors );
	}
	return $ancestors;
}

global使うのが嫌なので何とかしたいけど何とかならなかったのでとりあえずこのままotl
参考:http://soft.fpso.jp/develop/wordpress/customize/entry_2150.html

表示させたいところに追記

カテゴリー別人気記事

5, // 表示する記事数 'range' => 'weekly', // 期間("daily", "weekly", "monthly", "all") 'order_by' => 'views', // ソート順("comments", "views", "avg" (1日の平均閲覧数)) 'post_type' => 'post', // 投稿タイプ(post,page,your-custom-post-type) 'thumbnail_width' => 100, // サムネイルの横幅 'thumbnail_height' => 100, // サムネイルの高さ 'stats_comments' => 0, // コメントを表示する(1)/表示しない(0) 'stats_views' => 0, // 閲覧数を表示する(1)/表示しない(0) 'stats_author' => 0, // 投稿者を表示する(1)/表示しない(0) 'stats_date' => 0, // 日付を表示する(1)/表示しない(0) 'stats_date_format' => 'Y.n.j', // 日付のフォーマット 'stats_category' => 0, // カテゴリを表示する(1)/表示しない(0) 'excerpt_length' => 20, // 投稿のコンテンツから"n"文字の抜粋を作る 'post_html' => // HTMLの出力フォーマット "
{thumb}
{text_title}

{summary}

" ); global $_curcat; if ($_curcat->term_id) { if ($_curcat->category_parent != 0) { $_curcat = get_top_category($_curcat->term_id); } $catids = get_categories('fields=ids&child_of=' . $_curcat->term_id); $catids[] = $_curcat->term_id; $args['cat'] = implode(',', $catids); } // 関数の実行 wpp_get_mostpopular($args); ?>

上手くいけば→のように人気記事が表示されます
cssはうまい具合に書いて下さいませー