最近の投稿ブロックで、特定のカテゴリ(ターム)のみを表示する

複数のタクソノミーを、最近の投稿ブロック or 任意のタクソノミー投稿ブロック で表示したい という内容がフォーラムに上がってたので、この実装方法テストしてた部分をこちらに備忘録として記載しておきます。

Snow Monkeyのフックを使って最近の投稿ブロックのカスタマイズ

My Snow Monkeyプラグインに下記コードを記述ください

// 最新の投稿ブロックで任意のカテゴリー(hoge1,hoge2)だけを表示する
add_filter(
	'snow_monkey_recent_posts_widget_args_適応したいブロックのID',
	function( $query_args ) {
		$tax_query               = array(
			array(
				'taxonomy' => 'category', //カスタムタクソノミーの場合は、taxonomyの部分をタクソノミーのslugに置き換えてください
				'field'    => 'slug',
				'terms'    => array( 'hoge1', 'hoge2' ), //termsはslugを入れてください
			),
		);
		$query_args['tax_query'] = $tax_query;
		return $query_args;
	}
);

ブロックにIDを振る方法

ブロックのプロパティ(設定)画面の下側にある「高度な設定」のHTMLアンカーでID指定できます。
IDなので、必ず同投稿では、他のブロックと違うID(ユニークになるよう)にしてください。

赤い四角は無視ください(間違えて配置してた!)

任意のタクソノミーブロックもあるけどなぜ最近の投稿ブロックなのか

こういった事例って任意のタクソノミーブロックか、最近の投稿ブロックどっちがいいのか悩みます。
しかし、編集画面上でみたときに任意のタクソノミーブロックだと、画面上は1つしか選択してないのにといった状態で最近の投稿ブロックより混乱しやすいかなと思い、最近の投稿ブロックを採用しています。

備考

  • ○○カテゴリーだけ除外するといった場合は、tax_queryでコントロールする方法の他に category__not_in を使う方法もある
  • カテゴリーだったらtax_queryじゃなくcat を使うのもある
  • 記述の仕方は違うけど、pre_get_posts の方法とほぼ同じでできる

参考サイト