acf_register_field_type()


WordPressのacf_register_field_type()関数は、カスタムフィールドタイプをAdvanced Custom Fieldsプラグインに登録するために使用されます。この関数を使用すると、独自のフィールドタイプを作成し、カスタマイズされた入力インターフェイスを提供することができます。

シンタックス

acf_register_field_type( array $field );
  • $field (array) — 登録するフィールドの設定を含む連想配列。

例 1: 基本的なカスタムフィールドの登録

acf_register_field_type( array(
    'name' => 'custom_text_field',
    'label' => 'カスタムテキストフィールド',
    'render_field' => function( $field ) {
        echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $field['value'] ) . '">';
    }
) );

例 2: セレクトフィールドのカスタムタイプ

acf_register_field_type( array(
    'name' => 'custom_select_field',
    'label' => 'カスタムセレクトフィールド',
    'render_field' => function( $field ) {
        echo '<select name="' . esc_attr( $field['name'] ) . '">';
        foreach ( $field['choices'] as $key => $label ) {
            echo '<option value="' . esc_attr( $key ) . '">' . esc_html( $label ) . '</option>';
        }
        echo '</select>';
    }
) );

例 3: カスタムCSSを適用するフィールド

acf_register_field_type( array(
    'name' => 'custom_styled_field',
    'label' => 'カスタムスタイルフィールド',
    'render_field' => function( $field ) {
        echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $field['value'] ) . '" style="border: 2px solid red;">';
    }
) );

例 4: JavaScriptイベントを持つカスタムフィールド

acf_register_field_type( array(
    'name' => 'custom_js_field',
    'label' => 'カスタムJavaScriptフィールド',
    'render_field' => function( $field ) {
        echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" onfocus="this.style.backgroundColor=\'yellow\';">';
    }
) );

例 5: 条件付き表示を含むカスタムフィールド

acf_register_field_type( array(
    'name' => 'custom_conditional_field',
    'label' => '条件付きカスタムフィールド',
    'render_field' => function( $field ) {
        if ( isset( $field['condition'] ) && $field['condition'] === true ) {
            echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="条件が満たされました">';
        } else {
            echo '<input type="text" name="' . esc_attr( $field['name'] ) . '" value="条件が満たされていません">';
        }
    }
) );

注意事項:

  • カスタムフィールドタイプを登録する際は、各フィールドに一意のnameを付ける必要があります。
  • フィールドの設定配列内で必要なキーをすべて指定するようにしてください。
  • カスタムフィールドを正しく動作させるためには、render_fieldコールバック関数の中で適切なHTML出力を生成することが重要です。