概要
acf/prepare_field
フィルタは、Advanced Custom Fields (ACF)においてカスタムフィールドのレンダリングの準備として $field
設定をフィルタリングする機能を提供します。このフィルタは、特定の条件に基づいてフィールド設定を変更したい際に非常に便利です。
使用例
acf/prepare_field
フィルタは以下のような機能を実装する際によく使用されます。
1. フィールドのラベルを動的に変更する。
2. フィールドのデフォルト値を条件に応じて設定する。
3. フィールドの表示非表示を条件によって制御する。
4. 特定のユーザーやロールに基づいてフィールドの設定を変更する。
5. カスタムスタイルやクラスをフィールドに追加する。
6. フィールドの説明文を動的に変更する。
構文
add_filter('acf/prepare_field', 'my_custom_function');
function my_custom_function($field) {
// フィールドの設定を変更
return $field;
}
パラメータ
$field
: ACFフィールドの配列。
戻り値
- フィルタリングされた
$field
配列。
ACF バージョン
- 対応バージョン: ACF 5.x 以降。
WordPress バージョン
- 対応バージョン: WordPress 4.x 以降。
サンプルコード
サンプルコード1: フィールドラベルの動的変更
add_filter('acf/prepare_field/key=field_123456', function($field) {
$field['label'] = '新しいラベル';
return $field;
});
このコードは、特定のフィールドのラベルを動的に「新しいラベル」に変更します。
サンプルコード2: 特定条件でフィールドを非表示に
add_filter('acf/prepare_field/key=field_123456', function($field) {
if(!current_user_can('edit_posts')) {
return false; // 編集権限のない場合、フィールドを非表示
}
return $field;
});
このコードは、ユーザーが投稿を編集できない場合に特定のフィールドを非表示にします。
サンプルコード3: フィールドのデフォルト値の設定
add_filter('acf/prepare_field/key=field_123456', function($field) {
$field['default_value'] = 'デフォルト値';
return $field;
});
このコードは、指定したフィールドのデフォルト値を「デフォルト値」に設定します。
サンプルコード4: フィールドにカスタムスタイルを追加
add_filter('acf/prepare_field', function($field) {
$field['wrapper']['class'] .= ' my-custom-class'; // カスタムクラスを追加
return $field;
});
このコードは、すべてのフィールドに「my-custom-class」というカスタムCSSクラスを追加します。
サンプルコード5: フィールド説明文の動的変更
add_filter('acf/prepare_field/key=field_123456', function($field) {
$field['instructions'] = 'このフィールドの使い方: ...'; // 説明文を設定
return $field;
});
このコードは、指定したフィールドの説明文を動的に変更します。
この関数のアクションでの使用可能性
アクション | 使用事例 |
---|---|
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 |