概要
acf/load_value
フィルタは、Advanced Custom Fields (ACF) プラグインを使用して作成されたカスタムフィールドの値がデータベースからロードされた後に、その値をフィルタリングするためのフックです。このフィルタを使用することで、特定の条件に基づいてフィールドの値を変更したり、カスタマイズすることが可能になります。
主な使用目的
- 特定の条件に基づいてフィールドのデフォルト値を変更
- 値が存在しない場合に代替値を設定
- ユーザーの権限に応じて表示される値を変える
- フィールド値を他のデータから取得し、上書きする
- 条件付きロジックの実装
- フロントエンドや管理画面で表示されるデータの形式を調整
構文
add_filter('acf/load_value', 'my_load_value', 10, 3);
パラメータ
$value
: フィールドの現在の値$post_id
: 対象の投稿のID$field
: フィールドの設定情報
戻り値
フィルタリング後のフィールドの値
使用可能なバージョン
- ACFのバージョン: 5.0 以降
- WordPressのバージョン: 4.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_filter('acf/load_value/name=my_field', 'my_custom_default_value', 10, 3);
function my_custom_default_value($value, $post_id, $field) {
if ($value === '') {
return 'デフォルト値';
}
return $value;
}
説明: フィールドの値が空である場合に、デフォルト値を設定します。
サンプル 2: 投稿が特定の条件を満たす場合にフィールド値を変更する
add_filter('acf/load_value', 'modify_field_value_based_on_post', 10, 3);
function modify_field_value_based_on_post($value, $post_id, $field) {
if (get_post_type($post_id) === 'custom_post_type') {
return 'カスタムポストタイプに特有の値';
}
return $value;
}
説明: 投稿が特定のカスタム投稿タイプの場合、フィールドの値を変更します。
サンプル 3: 現在のユーザーの役割に基づいて値を変更
add_filter('acf/load_value', 'change_value_based_on_user_role', 10, 3);
function change_value_based_on_user_role($value, $post_id, $field) {
if (current_user_can('administrator')) {
return '管理者用の値';
}
return $value;
}
説明: 管理者であれば特定の値を返却し、他のユーザーにはデフォルトの値を返します。
サンプル 4: 依存フィールドからのデータを利用する
add_filter('acf/load_value/name=dependent_field', 'load_value_from_another_field', 10, 3);
function load_value_from_another_field($value, $post_id, $field) {
$source_value = get_field('source_field', $post_id);
return $source_value ? $source_value : $value;
}
説明: 依存するフィールドの値がある場合、それを利用してフィールドの表示値を変更します。
サンプル 5: 各種のエラー処理を行う
add_filter('acf/load_value', 'handle_empty_value_catch_error', 10, 3);
function handle_empty_value_catch_error($value, $post_id, $field) {
if (empty($value)) {
error_log("フィールド {$field['name']} の値が空でした。");
return 'エラーメッセージ';
}
return $value;
}
説明: フィールドの値が空の場合、エラーメッセージをログに記録し、代わりにエラーメッセージを返却します。