acf_register_field_type_info()


Advanced Custom Fields (ACF) プラグインの acf_register_field_type_info() 関数は、独自のカスタムフィールドタイプを登録するために使用されます。

シンタックス

acf_register_field_type_info( array $args );
  • $args (array) — カスタムフィールドタイプを登録するためのパラメーターを含む配列

$args 配列のキー:

  • name (string) — フィールドタイプの一意の名前
  • label (string) — 管理画面に表示されるラベル
  • category (string) — カテゴリー名 (例: “Basic”, “Content”)
  • defaults (array) — 初期設定値を含む配列
  • render_field (callable) — フィールドの HTML をレンダリングするための関数

例 1: シンプルなカスタムフィールドタイプの登録

acf_register_field_type_info( array(
    'name' => 'custom_text',
    'label' => 'Custom Text',
    'category' => 'Basic',
    'defaults' => array(
        'placeholder' => 'Enter text here',
    ),
    'render_field' => function( $field ) {
        echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $field['value'] ) . '">';
    },
) );

例 2: カテゴリーを “Content” に設定

acf_register_field_type_info( array(
    'name' => 'rich_text',
    'label' => 'Rich Text Editor',
    'category' => 'Content',
    'defaults' => array(),
    'render_field' => function( $field ) {
        echo '<textarea name="' . esc_attr( $field['name'] ) . '">' . esc_html( $field['value'] ) . '</textarea>';
    },
) );

例 3: プレースホルダー付きのテキストフィールド

acf_register_field_type_info( array(
    'name' => 'text_with_placeholder',
    'label' => 'Text with Placeholder',
    'category' => 'Basic',
    'defaults' => array(
        'placeholder' => 'Type something...',
    ),
    'render_field' => function( $field ) {
        echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" placeholder="' . esc_attr( $field['placeholder'] ) . '">';
    },
) );

例 4: カスタムクラスを追加

acf_register_field_type_info( array(
    'name' => 'custom_class_text',
    'label' => 'Text with Custom Class',
    'category' => 'Basic',
    'defaults' => array(
        'class' => 'custom-class',
    ),
    'render_field' => function( $field ) {
        echo '<input type="text" class="' . esc_attr( $field['class'] ) . '" name="' . esc_attr( $field['name'] ) . '">';
    },
) );

例 5: フィールド値の条件付きレンダリング

acf_register_field_type_info( array(
    'name' => 'conditional_text',
    'label' => 'Conditional Text',
    'category' => 'Content',
    'defaults' => array(
        'condition' => true,
    ),
    'render_field' => function( $field ) {
        if ( $field['condition'] ) {
            echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $field['value'] ) . '">';
        }
    },
) );

注意事項

フィールドタイプを登録する際は、name が一意であることを確認してください。同じ name を持つフィールドタイプが既に登録されている場合、競合が発生します。また、render_field 関数内で適切なエスケープ処理を行い、セキュリティを確保してください。