ワードプレスのACF(Advanced Custom Fields)プラグインの特定のカスタムフィールドの値を登録前にPHPプログラムでバリデーションする方法について解説いたします。
ACFのカスタムフィールドをバリデーション(入力内容の検証)する
ACFはワードプレスの投稿の編集画面に、わかりやすいUIのカスタムフィールドを追加するプラグインです。
この入力値をより詳細にバリデーション(入力検証)するには、ACFのフック、acf/validate_valueフィルタを使用します。
例 ACFのカスタムフィールド(スラグmyemail)にメールアドレスが含まれており、かつDocomo端末のメールアドレスであることを確認する
※このコードはテーマのfunctions.phpに記載すると動作します。
add_filter('acf/validate_value/name=myemail', 'validate_email_docomo', 10, 4); function validate_email_docomo($valid, $value, $form, $field) { if (! (filter_var($value, FILTER_VALIDATE_EMAIL) && strpos($value, '@docomo.ne.jp') !== false)) { $valid = '@docomo.ne.jpが含まれていない無効なメールアドレスです。'; } return $valid; }
例 特定のフィールドmynumberが任意の数値範囲であることを確認する
add_filter('acf/validate_value/name=mynumber', 'validate_number', 10, 4); function validate_number($valid, $value, $form, $field) { if ($value < 100 || $value > 1000) { $valid = '数値は100以上1000以下で入力してください。'; } return $valid; }
コードの解説
バリデーションを追加するacf/validate_valueフィルタは下記のような書式になります。
add_filter('acf/validate_value/name=バリデーションしたいカスタムフィールドのスラグ', 'バリデーションの為の関数', 10, 4);
$validをそのまま返還(return)すると、ACFの基本的なバリデーション結果のままになりますが、このフィルタに文字列を返すと、エラー表示し、カスタムフィールドを登録・更新できなくなります。
return "エラー表示内容";
ご参考になりましたら幸いです。
WordPress ワードプレスサイトのPHPコーディング・機能向上・修正のご依頼ご相談はお気軽にWPドクターまでお送りください