概要
acf/update_value
フィルタは、保存する前にフィールド $value
をフィルタリングします。このフィルタを使用することで、カスタムフィールドのデータをデータベースに保存する前に、特定の処理を行うことができます。このフィルタは、データの検証、フォーマット変更、または任意のカスタマイズを適用する際に非常に有用です。
よく使用される機能は以下の通りです:
- 値の正規化
- 特定の条件に基づく値の変更
- 外部APIからのデータ取得
- ローカリゼーション(翻訳)処理
- データのバリデーション
- 入力値のログ記録
このフィルタは、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を追加し、保存します。
これらのサンプルコードは、著作権フリーの内容に基づいた一般的な使い方の例です。各サンプルは、フィルタの機能を示すものであり、実際のプロジェクトでの応用に役立つでしょう。