8wired

とりあえずやってみるブログ

WordPress

STINGER7のNEW POSTをカテゴリに対応させる方法

投稿日:2016年2月13日 更新日:

STINGER7のテンプレートにはサイドバーにNEW POSTという最新記事を表示させる機能が備わっていますが、この機能はカテゴリを考慮せず常に最新の記事を表示してしまいます。STINGER5のときには削除していたので気になりませんでしたが、STINGER7に変更してから利用するようになり気になったので修正してみました。

修正するファイルはnewpost-thumbnail-on.php(またはnewpost-thumbnail-off.php)です。STINGER本体の中でアップデートされる頻度が少なそうなファイルなので、子テーマを作ってから編集するといいと思います。

<– ここから –>~<– ここまで –>の部分を追加します。

<?php
$args = array(
	'posts_per_page' => 5,
);
<!-- ここから -->
if( is_category() ) { //カテゴリーページ
       	$cat= get_queried_object();
        $categories = get_categories("child_of=".$cat->term_id);
       	$cats = array($cat->term_id);
       	foreach($categories as $category)
       	  	$cats[] = $category->term_id;
       	$args['category__in'] = $cats;
} elseif( is_single() ) { //シングルページ
       	$cat = get_the_category();
        $categories = get_categories("child_of=".$cat[0]->cat_ID);
       	$cats = array($cat[0]->cat_ID);
       	foreach($categories as $category)
       	  	$cats[] = $category->term_id;
       	$args['category__in'] = $cats;
	$args['post__not_in'] = array(get_the_ID());
}
<!-- ここまで -->
$st_query = new WP_Query( $args );
?>

カテゴリページでは表示しているカテゴリの、シングルページで表示している記事のカテゴリの最新記事が表示されるようになります。カテゴリが階層化されている場合には、子カテゴリの記事も表示されます。またシングルページでは表示している記事は除外されます。

標準のNEW POSTを非表示にしてウィジェットを利用するという方法を取るのがよさそうですが、便利なウィジェットとかないんですかね。

スポンサーリンク

-WordPress
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事