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"]'); ?>
とすれば利用できます(テンプレートタグと同じ動作になります)。