WordPressの旧再利用ブロック、現在の「パターン」をショートコードで呼び出せるようにするカスタマイズについてのご紹介です。
TOC
PHPを追記する
以下のコードを子テーマのfunctions.phpかcodesnippetsか何かに追記してください。
function custom_reusable_block_shortcode( $atts ) {
// ショートコードの引数を取得
$atts = shortcode_atts(
[
'id' => '', // 再利用ブロックのID
],
$atts,
'reuse-block'
);
// IDが指定されていない場合は空文字を返す
if ( empty( $atts['id'] ) ) {
return '';
}
// 再利用ブロックの内容を取得
$reuse_block = get_post( $atts['id'] );
// 再利用ブロックが存在しない場合は空文字を返す
if ( ! $reuse_block || 'wp_block' !== $reuse_block->post_type ) {
return '';
}
// 再利用ブロックの内容をフィルタリングして返す
$reuse_block_content = apply_filters( 'the_content', $reuse_block->post_content );
return $reuse_block_content;
}
add_shortcode( 'reuse-block', 'custom_reusable_block_shortcode' );
使用方法
1.再利用ブロックのIDを取得する
管理画面の「再利用可能ブロック」一覧に移動し、編集リンクのURLからブロックのIDを確認します。URLは次のようになっています
https://example.com/wp-admin/post.php?post=123&action=edit
この場合、123 が再利用ブロックのIDです。
2.ショートコードを投稿や固定ページに挿入する 以下の形式でショートコードを使用します。ここで、id=”123″ の部分に取得したIDを記述します。
[[reuse-block id="123"]]
動作の仕組み
- ショートコード [reuse-block id=”123″] が呼び出されると、get_post() で該当する再利用ブロックの投稿データを取得します。
- 投稿データの post_content を apply_filters(‘the_content’, …) で処理することで、再利用ブロックの内容を適切にレンダリングします。
- ショートコードが設置された場所に、再利用ブロックの内容が埋め込まれます。