acf_prepare_field()


ACF(Advanced Custom Fields)のacf_prepare_field()関数は、フィールドデータをカスタマイズまたはフィルタリングする際に使用されます。この関数はフィルターを適用する前にフィールドデータを操作するための重要な役割を果たします。

シンタックス

acf_prepare_field( array $field )
  • $field (array) — ACFフィールドデータを表す配列。例えば、name, label, typeなどのキーを含みます。

例1: フィールドラベルの変更

フィールドのラベルを動的に変更します。

<?php
add_filter('acf/prepare_field', function( $field ) {
    if( $field['name'] === 'my_field_name' ) {
        $field['label'] = '新しいラベル';
    }
    return $field;
});
?>

例2: フィールドの非表示

特定の条件でフィールドを非表示にします。

<?php
add_filter('acf/prepare_field', function( $field ) {
    if( $field['name'] === 'hidden_field' ) {
        return false;
    }
    return $field;
});
?>

例3: フィールドのプレースホルダー設定

テキストフィールドにプレースホルダーを追加します。

<?php
add_filter('acf/prepare_field', function( $field ) {
    if( $field['type'] === 'text' ) {
        $field['placeholder'] = 'ここに入力してください';
    }
    return $field;
});
?>

例4: 特定のフィールドタイプのCSSクラスを追加

フィールドタイプがtextareaの場合にカスタムCSSクラスを追加します。

<?php
add_filter('acf/prepare_field', function( $field ) {
    if( $field['type'] === 'textarea' ) {
        $field['class'] .= ' custom-textarea-class';
    }
    return $field;
});
?>

例5: 選択オプションの動的変更

セレクトボックスのオプションを動的に設定します。

<?php
add_filter('acf/prepare_field', function( $field ) {
    if( $field['name'] === 'dynamic_select' ) {
        $field['choices'] = [
            'option1' => 'オプション1',
            'option2' => 'オプション2',
            'option3' => 'オプション3',
        ];
    }
    return $field;
});
?>

注意点

acf_prepare_field()を使用する際は、フィルター内で必ずreturnを使用してフィールドデータを返す必要があります。return falseを返すと、そのフィールドは非表示になります。フィールド名やタイプを正確に指定するよう注意してください。