WordPressでは、ブロックエディタで編集しているコンテンツの中へ直接PHPコードを直接書くことは、セキュリティの観点からできないようになっています。
したがって、PHPで何かの情報を呼び出して、出た結果を本文内へ出力したい場合には、別のPHPベースのテンプレートを使う必要があります。
また、PHPベースのテンプレートの中に、通常のサイトのメニューから編集できる再利用ブロックのコンテンツを入れておき、それも含めて出力したいという機会もあるのではないでしょうか?
今回はそんなニッチな使い方?をする私のような方のために、再利用ブロックで作成したコンテンツをPHPベースのテンプレート内で呼び出す方法を紹介します。
コード自体は、「Reusable Blocks Extended」というプラグインから、必要なコードを抜粋・編集したものになります。サイトのプログラム編集に慣れていない方は、上記プラグインを使って実装ください。
コードを使用する前に、ここをクリックして注意事項をご確認ください
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
再利用ブロックをテンプレートタグやショートコードで呼び出す方法
クラシックテーマ・ブロックテーマどちらでも使うことができますが、どちらのテーマでも更新時に上書きされないよう、子テーマでの実装をおすすめします。
テーマの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"]'); ?>
とすれば利用できます(テンプレートタグと同じ動作になります)。