
ブロックテーマでは、テーマオプションとして複数のテンプレートパーツ(ヘッダーなど)が用意されている場合があります。
例えば、テーマ「Ipsum」の場合、ヘッダーパーツには以下の3種類があります。
- header (デフォルト)
- header-collapsed (ナビゲーションメニュー固定)
- header-sticky (ヘッダー固定)
通常、すべてのページ(テンプレート)でヘッダーパーツを header-stick に変更したい場合、個別のテンプレートを1つずつ開いて変更・保存し直す必要があります。ページ数が多いと非常に手間がかかりますよね。
そこで今回は、個別のテンプレートファイルを書き換えることなく、読み込まれるテンプレートパーツを一括で切り替えるTipsをご紹介します。
サンプルコード
サンプルコードでは、WordPress7.2での 新しいデフォルトテーマ ipsum を使ってみます。
以下のコードを my-plugin.php に張り付けてみてください。
/**
* Ipsum のヘッダーパーツを一括変更する
*
* デフォルトの header から header-sticky へ
*/
function nendebcom_ipsum_change_header_template_part( $parsed_block ) {
// Template Part ブロック以外は対象外。
if ( 'core/template-part' !== ( $parsed_block['blockName'] ?? '' ) ) {
return $parsed_block;
}
// Ipsum テーマ以外は対象外。
if ( 'ipsum' !== ( $parsed_block['attrs']['theme'] ?? '' ) ) {
return $parsed_block;
}
// 対象のヘッダーパーツ。
$header_slugs = array(
'header',
'header-collapsed',
'header-sticky',
);
// 対象外のパーツは変更しない。
if ( ! in_array(
$parsed_block['attrs']['slug'] ?? '',
$header_slugs,
true
) ) {
return $parsed_block;
}
//header-stickyに変更
$parsed_block['attrs']['slug'] = 'header-sticky;
return $parsed_block;
}
add_filter( 'render_block_data', 'nendebcom_ipsum_change_header_template_part' );
このように header-sticky(ヘッダー固定) になりました。

もし、特定のテンプレートを別のテンプレートパーツ(ヘッダー)に変更したい場合は以下のように変更してください。
//↓コメントアウトする
//$parsed_block['attrs']['slug'] = 'header-sticky';
// 固定ページだけ別のヘッダーにする。
if ( is_page() ) {
//header-collapsedに変更
$parsed_block['attrs']['slug'] = 'header-collapsed';
} else {
//header-stickyに変更
$parsed_block['attrs']['slug'] = 'header-sticky';
}
ご注意
テンプレート側で別のテンプレートパーツ(ヘッダー)に設定してても、上記のコードでの指定のヘッダーを使用するようになります。
テンプレートもできるよ
テンプレートを変更せずに 投稿のデフォルトテンプレートとして、はじめから 2カラム(サイドバー)を読み込ませるTips をご紹介します。