WordPressのブロックエディター(Gutenberg)では、繰り返し使いたいコンテンツを「再利用ブロック」として登録しておくことができます。通常は編集画面から手動で作成・管理しますが、PHPで事前に再利用ブロックを登録しておきたいケースもあります。この記事では、再利用ブロックの登録・呼び出しをPHPで管理する方法を紹介します。
再利用ブロックの正体は「wp_block」投稿タイプ
再利用ブロックは内部的には wp_block
というカスタム投稿タイプとして保存されています。つまり、wp_insert_post()
を用いて通常の投稿と同様に扱うことが可能です。
PHPで再利用ブロックを登録する
以下のコードを functions.php
に追加すると、サイト初回読み込み時に指定した再利用ブロックが登録されます。
function register_custom_reusable_block() {
$slug = 'my-reusable-block';
// すでに存在するか確認
$existing = get_posts(array(
'name' => $slug,
'post_type' => 'wp_block',
'post_status' => 'publish',
'numberposts' => 1,
));
if (empty($existing)) {
$block_content = '<!-- wp:paragraph --><p>これはPHPで追加した再利用ブロックです。</p><!-- /wp:paragraph -->';
$postarr = array(
'post_title' => 'PHPで追加した再利用ブロック',
'post_name' => $slug,
'post_content' => $block_content,
'post_status' => 'publish',
'post_type' => 'wp_block',
);
wp_insert_post($postarr);
}
}
add_action('init', 'register_custom_reusable_block');
post_content
に記述されているのは、Gutenbergのブロック記法(コメント形式)です。この形式で記述すれば、ブロックとして認識されます。
テンプレートやショートコードから呼び出す方法
PHP側から再利用ブロックの内容をテンプレートに表示したい場合、get_post()
や do_blocks()
を使って以下のように記述できます。
$block_post = get_page_by_path('my-reusable-block', OBJECT, 'wp_block');
if ($block_post) {
echo apply_filters('the_content', $block_post->post_content);
}
もしくは、ショートコードとして登録することで、任意の場所に呼び出すことも可能です。
function shortcode_reusable_block() {
$block_post = get_page_by_path('my-reusable-block', OBJECT, 'wp_block');
return $block_post ? apply_filters('the_content', $block_post->post_content) : '';
}
add_shortcode('reusable_block', 'shortcode_reusable_block');
あとは投稿やウィジェット内に [reusable_block]
と記述するだけで表示されます。
まとめ
WordPressの再利用ブロックは「wp_block」投稿タイプとして扱われるため、PHPからの操作が可能です。これにより、初期コンテンツの登録やテーマ・プラグインからの管理が柔軟に行えます。マルチサイトやカスタムテーマ開発の現場では、管理画面での手作業を減らす手段として非常に有効です。