概要
フィルタの acf/validate_value
は、Advanced Custom Fields (ACF) プラグインでフィールドの $value
を保存する前に検証を実行するために使用されます。このフィルタを使用すると、特定の条件に基づいて値の検証や許可を制御できます。これにより、ユーザーが入力したデータが期待される形式や条件に適合しているかを確認することが可能です。例えば、数値の範囲チェック、必須フィールドの検証、形式のバリデーションなどの用途に利用されます。
放送される概要は以下の通りです:
- 数値範囲のチェック
- 必須フィールドの確認
- メールアドレスの形式検証
- カスタムバリデーションロジック
- Uniqueな値の確認
- 条件付きフィールドの表示/非表示の制御
構文
add_filter('acf/validate_value', 'your_validate_function', 10, 4);
パラメータ
$valid
– Boolean。初期値は true で、バリデーションが成功した場合は true を返す。$value
– Mixed。フィールドから送信された値。$form
– Array。フォームデータの配列。$field
– Array。ACFフィールドの配列。
戻り値
- Boolean:値が有効であれば
true
、無効であればfalse
を返す。
使用可能なバージョン
- 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/validate_value/name=your_field_name', 'check_required_field', 10, 4);
function check_required_field($valid, $value, $form, $field) {
if ($value === '') {
$valid = 'このフィールドは必須です。';
}
return $valid;
}
このサンプルコードは、ACFフィールドの一つが空である場合にエラーメッセージを表示します。
サンプル2:数値範囲のバリデーション
add_filter('acf/validate_value/name=age', 'validate_age', 10, 4);
function validate_age($valid, $value, $form, $field) {
if ($value < 18 || $value > 99) {
$valid = '年齢は18歳以上99歳以下でなければなりません。';
}
return $valid;
}
このコードは、年齢フィールドが18歳未満または99歳を超えるとエラーメッセージを返します。
サンプル3:メールアドレスの形式検証
add_filter('acf/validate_value/name=email', 'validate_email_format', 10, 4);
function validate_email_format($valid, $value, $form, $field) {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
$valid = '無効なメールアドレスです。';
}
return $valid;
}
このサンプルでは、ユーザーが入力したメールアドレスの形式が不正である場合にエラーメッセージを表示します。
サンプル4:ユニークな値の確認
add_filter('acf/validate_value/name=username', 'check_unique_username', 10, 4);
function check_unique_username($valid, $value, $form, $field) {
$users = get_users(array('meta_key' => 'username', 'meta_value' => $value));
if (!empty($users)) {
$valid = 'このユーザー名は既に使用されています。';
}
return $valid;
}
このコードは、入力されたユーザー名が既存のユーザーと重複する場合にエラーメッセージを返します。
サンプル5:カスタムバリデーションロジック
add_filter('acf/validate_value/name=zipcode', 'validate_zipcode', 10, 4);
function validate_zipcode($valid, $value, $form, $field) {
if (!preg_match('/^d{3}-d{4}$/', $value)) {
$valid = '郵便番号はXXX-XXXXの形式で入力してください。';
}
return $valid;
}
このサンプルコードは、郵便番号が特定の形式(例:123-4567)でない場合にエラーメッセージを返すバリデーションを追加します。
以上のサンプルコードは、すべて著作権フリーのもので、ACFのacf/validate_value
フィルタの実用的な利用方法を示しています。