Snow Monkeyのテンプレート引数|WordPress

このお知らせを受けて、テンプレート引数というものはどう使うのか実際やってみた。

テンプレート引数とは
フィルターフックで特定のテンプレートに引数を渡すことで、そのテンプレートによって生成されるHTMLを一部カスタマイズできる。

フィルターフック等は一般的にはfunctions.phpに書くが、Snow Monkeyの場合はfunctions.phpの記述をSnow Monkey用に書くためのファイルをプラグインで別途用意してくれているので、そのプラグインをインストールしてプラグインフォルダ内のmy-snowmonkey.phpに記述する。

プラグインはSnow Monkeyをサブスク契約することでDLできる。

以下、実際に書いた記述。

add_filter(
	'snow_monkey_get_template_part_args_template-parts/content/child-pages',
	function( $args ) {
		$args['vars'] = [
			'_entries_layout'      => 'simple',
			'_force_sm_1col'       => false,
			'_item_thumbnail_size' => 'medium_large',
			'_item_title_tag'      => 'h4',
		];
		return $args;
	}
);

各行の記述の意味は以下の通り。

'snow_monkey_get_template_part_args_template-parts/content/child-pages',

で、引数を渡したいテンプレートを特定する。

テンプレートフックについて詳しくは以下のページ。

ここでは以下のフックを使用しており、

snow_monkey_get_template_part_args_{slug}

適用したいテンプレートが

template-parts/content/child-pages.php

なので、フックがsnow_monkey_get_template_part_args_template-parts/content/child-pagesとなる。

以下の部分で$argsを取得し、$args[vars]に連想配列として格納されたテンプレート引数の各値を上書きすることにより、描画されるHTMLを変更する。

	function( $args ) {
		$args['vars'] = [
			'_entries_layout'      => 'simple',
			'_force_sm_1col'       => false,
			'_item_thumbnail_size' => 'medium_large',
			'_item_title_tag'      => 'h4',
		];
		return $args;
	}

child-pages.phpについてはこれを書いた翌日のアップデートでエディタ画面のインスペクターから表示について設定できるようになった。フィルターフックでの記述が優先されちゃうので、インスペクターの設定を使用する場合は該当の記述をmy-snowmonkeyから消す必要がある。