WordPressでは、ブロックエディタで編集しているコンテンツの中へ直接PHPコードを直接書くことは、セキュリティの観点からできないようになっています。

したがって、PHPで何かの情報を呼び出して、出た結果を本文内へ出力したい場合には、別のPHPベースのテンプレートを使う必要があります。

また、PHPベースのテンプレートの中に、通常のサイトのメニューから編集できる再利用ブロックのコンテンツを入れておき、それも含めて出力したいという機会もあるのではないでしょうか?

今回はそんなニッチな使い方?をする私のような方のために、再利用ブロックで作成したコンテンツをPHPベースのテンプレート内で呼び出す方法を紹介します。

コード自体は、「Reusable Blocks Extended」というプラグインから、必要なコードを抜粋・編集したものになります。サイトのプログラム編集に慣れていない方は、上記プラグインを使って実装ください。

再利用ブロックをテンプレートタグやショートコードで呼び出す方法

クラシックテーマ・ブロックテーマどちらでも使うことができますが、どちらのテーマでも更新時に上書きされないよう、子テーマでの実装をおすすめします。

テーマのfunctions.phpへ以下を追加すれば機能します。

/***** 再利用ブロックをショートコードで出力 *****/
/* 再利用ブロック内のコンテンツを取得 */
function sample_get_block( $id ) {
	$content_post = get_post( $id );
	$content = $content_post->post_content;
	return $content;
}

/* hima_art_display_block( 再利用ブロックのID );でテンプレート内出力 */
function sample_display_block( $id ) {
	$content = apply_filters( 'the_content', haup_get_block( $id ) );
	return $content;
}

/* reuse-scショートコードで出力 */
function sample_reuse_block_shortcode_init( $atts ){
	extract(shortcode_atts(
		array(
			'id' => ''
	), $atts));
	$content = apply_filters( 'the_content', sample_get_block( $id ) );
	return $content;
}
add_shortcode( 'reuse-sc', 'sample_reuse_block_shortcode_init' );

たったこれだけのコードで実装できるなら、コアに入れといてよ~と言いたい位です(笑)。

あとは、テンプレートタグとして使うなら

<?php sample_get_block(再利用ブロックのID); ?>

ショートコードで使うなら

[reuse-sc id="再利用ブロックのID"]

を入れれば目的の再利用ブロックの本文の内容が出力されます。

再利用ブロックのIDは投稿IDと同様に、再利用ブロックの一覧で目的のものをマウスオーバーした際に出てくるリンク先URLの「?post=〇〇」の〇〇の部分(数字)です。

IDを管理画面の一覧上に常に表示させたい方はこちらのページを参考にしてください

ちなみに上記のショートコードをPHPベースのテンプレート内で呼び出すには

<?php echo do_shortcode(['reuse-sc id="再利用ブロックのID"]'); ?>

とすれば利用できます(テンプレートタグと同じ動作になります)。