プラグインAdvanced custom fields(ACF)のacf/update_valueフィルタの使用方法・解説

概要

acf/update_value フィルタは、保存する前にフィールド $value をフィルタリングします。このフィルタを使用することで、カスタムフィールドのデータをデータベースに保存する前に、特定の処理を行うことができます。このフィルタは、データの検証、フォーマット変更、または任意のカスタマイズを適用する際に非常に有用です。

よく使用される機能は以下の通りです:

  1. 値の正規化
  2. 特定の条件に基づく値の変更
  3. 外部APIからのデータ取得
  4. ローカリゼーション(翻訳)処理
  5. データのバリデーション
  6. 入力値のログ記録

このフィルタは、Advanced Custom Fields (ACF) プラグインのバージョン5以降、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/update_value', 'my_acf_uppercase', 10, 3);
function my_acf_uppercase($value, $post_id, $field) {
    return strtoupper($value);
}

このコードは、特定のカスタムフィールドに保存される値を大文字に変換します。

サンプル2: 特定の条件で値を変更する

add_filter('acf/update_value/name=my_field', 'change_my_field_value', 10, 3);
function change_my_field_value($value, $post_id, $field) {
    if ($value == 'example') {
        return 'modified_example';
    }
    return $value;
}

このコードは、フィールド名が my_field のカスタムフィールドに対して、もし値が example であれば modified_example に変更します。

サンプル3: 外部APIからデータを取得して値を設定

add_filter('acf/update_value', 'my_acf_fetch_api_data', 10, 3);
function my_acf_fetch_api_data($value, $post_id, $field) {
    $response = wp_remote_get('https://api.example.com/data');
    if (is_array($response) && !is_wp_error($response)) {
        $body = json_decode($response['body'], true);
        return isset($body['desired_value']) ? $body['desired_value'] : $value;
    }
    return $value;
}

このコードは、フィールドの値を保存する前に外部APIからデータを取得し、特定の値をフィールドに設定します。

サンプル4: 値の削除や無効化

add_filter('acf/update_value', 'my_acf_remove_value', 10, 3);
function my_acf_remove_value($value, $post_id, $field) {
    if ($value == 'remove_this') {
        return null; // 値を削除
    }
    return $value;
}

このコードは、もしフィールドの値が remove_this であれば、その値を削除(nullに設定)します。

サンプル5: 値にカスタムHTMLを追加

add_filter('acf/update_value', 'my_acf_add_html', 10, 3);
function my_acf_add_html($value, $post_id, $field) {
    return $value . ' <span>カスタムHTML</span>';
}

このコードは、フィールドの値にカスタムHTMLを追加し、保存します。

これらのサンプルコードは、著作権フリーの内容に基づいた一般的な使い方の例です。各サンプルは、フィルタの機能を示すものであり、実際のプロジェクトでの応用に役立つでしょう。

この関数について質問する


上の計算式の答えを入力してください