web-dev-qa-db-ja.com

WordpressのACFプラグインを使ったフィールドの検証エラー

WordpressのAdvanced Custom Fieldsプラグインを使ってフィールドを検証するときに、次のような問題があります。何が起こるかというと、フィールドは正しく検証されていますが、検証しているフィールドの上の同じページに移動するのではなく、新しいページにエラーが表示されます。検証するコードは次のとおりです。

function validate_fields_contact()
{
    add_filter('acf/validate_value/name=phone_contact', 'validate_phone_number', 10, 4);
}

function validate_phone_number($valid, $value, $field, $input)
{
    if (!$valid) {
        return $valid;
    }

    if(!preg_match("/^\+XX(\s|\d){8,12}$/", $value)) {
        return __('Incorrect Format.');
    }

    return true;
}

それはそのようなはずです:

enter image description here 

これが起こるのです

enter image description here 

私は同じ問題を抱えていました。そして答えのために十分な時間を無駄にしました。

まず次のことを確認してください。

Ajaxリクエストは失敗することなく起こります。だから、チェック:

  1. Acf_form_head()はget_header()よりも前に実行され、HTMLが出力される前に実行されますか?
  2. あなたのテーマはwp_head()への呼び出しを含んでいますか?
  3. あなたのテーマはwp_foot()への呼び出しを含んでいますか?
  4. あなたはJavaScriptのロードを延期していますか、それともそうでなければJavaScriptがページにロードされる方法を変更していますか?

このACFサポートトピック も参照してください。新しいユーザーを作成するためにacf_form()を使用する場合は、 このトピック を参照してください。

しかし私の場合、この行のルートはis_admin()で 'acf/validate_value'フックに入りました。

if ( ! $valid || is_admin() ) { return $valid; }

is_admin()はAJAX requestsによって 'true'を返すので 。その結果、検証機能は機能しませんでした。

誰かに役立つことを願っています。

0