プラグインAdvanced custom fields(ACF)のacf_register_block_type関数の使用方法・解説

概要

acf_register_block_type 関数は、Gutenberg エディターにカスタム ブロック タイプを登録します。この関数を用いることで、WordPress の投稿やページの編集画面に独自のカスタムブロックを追加し、ユーザーがそのブロックを簡単に利用できるようにします。

この関数は以下の機能を実装する際によく使われます。
1. 特定のコンテンツを視覚的に強調するブロックの作成
2. ユーザーのニーズに合わせたカスタムオプションの提供
3. 設計上の要件を満たすための独自レイアウトの作成
4. 繰り返し使用するコンポーネントの管理を簡素化する
5. 他のプラグインやテーマと統合を促進する
6. スタンダードなブロックに追加機能を追加する

構文

acf_register_block_type( $args );

パラメータ

  • $args (配列): ブロックの設定情報。以下のオプションを含む。
    • name (文字列): ブロックの名前 (例: my-plugin/my-custom-block)
    • title (文字列): ブロックの表示名
    • render_template (文字列): ブロックが表示される際のテンプレートファイル
    • category (文字列): ブロックが属するカテゴリー
    • icon (文字列): ブロックのアイコン
    • keywords (配列): ブロックの検索キーワード
    • supports (配列): サポートされる機能 (例: align, anchor など)

戻り値

この関数は戻り値を持たず、登録されたブロックは WordPress のビジュアルエディターで直接利用可能になります。

互換性

  • Advanced Custom Fields (ACF) バージョン: 5.0.0 以降
  • WordPress バージョン: 5.0 以降

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード 1: シンプルなテキストブロックの登録

このサンプルは、シンプルなテキストを表示するカスタムブロックを登録します。

add_action('acf/init', 'my_acf_block_init');
function my_acf_block_init() {
    acf_register_block_type(array(
        'name'              => 'simple-text',
        'title'             => __('Simple Text'),
        'render_template'   => 'template-parts/blocks/simple-text.php',
        'category'          => 'common',
        'icon'              => 'editor-alignleft',
        'keywords'          => array('text', 'simple'),
    ));
}

引用元: https://www.advancedcustomfields.com/resources/acf_register_block_type/

サンプルコード 2: 画像を表示するカスタムブロック

このサンプルは、画像をアップロードして表示できるカスタムブロックを登録します。

add_action('acf/init', 'register_image_block');
function register_image_block() {
    acf_register_block_type(array(
        'name'              => 'image-block',
        'title'             => __('Image Block'),
        'render_template'   => 'template-parts/blocks/image-block.php',
        'category'          => 'media',
        'icon'              => 'format-image',
        'keywords'          => array('image'),
    ));
}

引用元: https://www.advancedcustomfields.com/resources/acf_register_block_type/

サンプルコード 3: カスタムオプションがあるブロックの登録

このサンプルは、ユーザーがオプションとして色を選択できるカスタムブロックを登録します。

add_action('acf/init', 'custom_color_block');
function custom_color_block() {
    acf_register_block_type(array(
        'name'              => 'color-block',
        'title'             => __('Color Block'),
        'render_template'   => 'template-parts/blocks/color-block.php',
        'category'          => 'design',
        'icon'              => 'art',
        'keywords'          => array('color', 'custom'),
    ));
}

引用元: https://www.advancedcustomfields.com/resources/acf_register_block_type/

サンプルコード 4: 複数のフィールドを持つブロックの登録

このサンプルは、タイトルと説明を持つカスタムブロックを登録します。

add_action('acf/init', 'register_title_description_block');
function register_title_description_block() {
    acf_register_block_type(array(
        'name'              => 'title-description-block',
        'title'             => __('Title and Description'),
        'render_template'   => 'template-parts/blocks/title-description-block.php',
        'category'          => 'layout',
        'icon'              => 'info',
        'keywords'          => array('title', 'description'),
    ));
}

引用元: https://www.advancedcustomfields.com/resources/acf_register_block_type/

サンプルコード 5: グリッドレイアウトのブロック登録

このサンプルは、複数のカラムを持つグリッドレイアウトのカスタムブロックを登録します。

add_action('acf/init', 'register_grid_block');
function register_grid_block() {
    acf_register_block_type(array(
        'name'              => 'grid-block',
        'title'             => __('Grid Block'),
        'render_template'   => 'template-parts/blocks/grid-block.php',
        'category'          => 'layout',
        'icon'              => 'grid-view',
        'keywords'          => array('grid'),
    ));
}

引用元: https://www.advancedcustomfields.com/resources/acf_register_block_type/

この関数について質問する


上の計算式の答えを入力してください