【WordPress】ブロックエディターで再利用ブロックの登録・呼び出しをPHPで管理する方法

【WordPress】ブロックエディターで再利用ブロックの登録・呼び出しをPHPで管理する方法 WordPress

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からの操作が可能です。これにより、初期コンテンツの登録やテーマ・プラグインからの管理が柔軟に行えます。マルチサイトやカスタムテーマ開発の現場では、管理画面での手作業を減らす手段として非常に有効です。