[Snow Monkey Blocks]任意のタクソノミーの投稿ブロックで現在表示している投稿は除外する方法

こんにちは。梅雨ですね。本日は、湿気てしまったばかうけ(歌舞伎揚味)を共にこの記事をしたためています。

さて、この記事では備忘録を兼ねて、Snow Monkey Blocksで投稿(single)を表示したときに、”任意のタクソノミーの投稿ブロック”で、自分の投稿を含めない方法をお届けします。
(たぶん、この記事一番閲覧するのは将来の私)

準備

今回は、Snow Monkey Blocksオリジナルのフィルターフックを使用して、カスタマイズしていくので、カスタマイズ用のPHPコードが書ける場所が必要です

  • オリジナルテーマ or 子テーマの場合はfunctions.php
  • カスタマイズ用のプラグイン(My Snow Monkeyなど)のプラグインに記述 ←こっち推奨

テーマのfunctions.phpのほうがもうヘイッ☆とばかりにさくっと記載はできるのですが、使用するテーマが変わってしまった場合でもそのままカスタマイズ内容が効いていたほうがきっと良いので、私はプラグインでやってしまってます。

現在表示している投稿を除外するコードを追加

/**
 * 任意のタクソノミーブロックで現在表示しているページの投稿は出さないようにルールを追加
 */
add_filter( 'snow_monkey_taxonomy_posts_widget_args', function( $query_args ) {
	global $post;
	$query_args['post__not_in'] = array($post->ID); //自分の投稿は除外
	return $query_args;
} );

pre_get_posts() と同じような感覚で書いていくだけでカスタマイズができる。めっちゃ楽でありがたい

ちなみに同じような形で最近の投稿ブロックでのカスタマイズも可能!

add_filter( 'snow_monkey_recent_posts_widget_args', function( $query_args ) {
	global $post;
	$query_args['post__not_in'] = array($post->ID); //自分の投稿は除外
	return $query_args;
} );

こぼれ話

実は、任意のタクソノミーの投稿ブロックのフィルターフックってなんという名称なのかのソースがどこにもなく、だからといってプラグインのコードを読み解く力も足りずで謎だったのですが、きっとキタジマさんだから同じような機能のブロックと同じルールでフックを作ってるはずと思い、すでにフォーラムなどでシェアされていた最近の投稿ブロックのカスタマイズ方法を参考に、”recent”の部分を”taxonomy”に書き換えて試してみたら無事動いたという流れで、当該コードを作ることができました。

参考:https://snow-monkey.2inc.org/forums/topic/snow-monkey-blocks%E3%81%AE%E3%80%8C%E6%9C%80%E8%BF%91%E3%81%AE%E6%8A%95%E7%A8%BF%E3%80%8D%E3%81%AE%E3%80%81%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%8A%95%E7%A8%BF%E6%95%B0%E3%81%AE%E4%B8%8A%E9%99%90/