Проверка Ninja Forms на стороне сервера не работает - PullRequest
1 голос
/ 26 апреля 2020

Я потратил два дня, пытаясь понять это. У меня есть страница WordPress с четырьмя полями формы ниндзя. Одним из полей является электронная почта. Я создал API (в нашем. NET Базовом проекте), который проверяет, а затем выдает ошибку 400, если в нашей БД уже есть этот адрес электронной почты. Я использую функцию Ninja Forms Webhook для отправки формы в мой API. Я просто хочу показать свое сообщение об ошибке 400 пользователю.

Я использую приведенную ниже документацию из форм ниндзя, но она не работает:

https://developer.ninjaforms.com/codex/custom-server-side-validation/

Более конкретно, я получаю 500 со следующей ошибкой в ​​консоли:

Uncaught Error: Call to undefined function my_nf_validation() in \/home\/site\/wwwroot\/wp-content\/themes\/hello-elementor\/functions.php:245\nStack trace:\n#0 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(287): {closure}(Array)\n#1 \/home\/site\/wwwroot\/wp-includes\/plugin.php(206): WP_Hook->apply_filters(Array, Array)\n#2 \/home\/site\/wwwroot\/wp-content\/plugins\/ninja-forms\/includes\/AJAX\/Controllers\/Submission.php(132): apply_filters('ninja_forms_sub...', Array)\n#3 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(287): NF_AJAX_Controllers_Submission->submit('')\n#4 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(311): WP_Hook->apply_filters('', Array)\n#5 \/home\/site\/wwwroot\/wp-includes\/plugin.php(478): WP_Hook->do_action(Array)\n#6 \/home\/site\/wwwroot\/wp-admin\/admin-ajax.php(175): do_action('wp_ajax_nf_ajax...')\n#7 {main}\n  thrown<\/pre>"},"last":{"type":1,"message":"Uncaught Error: Call to undefined function my_nf_validation() in \/home\/site\/wwwroot\/wp-content\/themes\/hello-elementor\/functions.php:245\nStack trace:\n#0 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(287): {closure}(Array)\n#1 \/home\/site\/wwwroot\/wp-includes\/plugin.php(206): WP_Hook->apply_filters(Array, Array)\n#2 \/home\/site\/wwwroot\/wp-content\/plugins\/ninja-forms\/includes\/AJAX\/Controllers\/Submission.php(132): apply_filters('ninja_forms_sub...', Array)\n#3 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(287): NF_AJAX_Controllers_Submission->submit('')\n#4 \/home\/site\/wwwroot\/wp-includes\/class-wp-hook.php(311): WP_Hook->apply_filters('', Array)\n#5 \/home\/site\/wwwroot\/wp-includes\/plugin.php(478): WP_Hook->do_action(Array)\n#6 \/home\/site\/wwwroot\/wp-admin\/admin-ajax.php(175): do_action('wp_ajax_nf_ajax...')\n#7 {main}\n  thrown","file":"\/home\/site\/wwwroot\/wp-content\/themes\/hello-elementor\/functions.php","line":245}},"debug":[]}

Я поместил код в файл function.php в редакторе тем. Я впервые работаю с WordPress, поэтому я надеюсь, что делаю это правильно. Это мой код, взятый непосредственно из вышеприведенной документации:

add_filter( 'ninja_forms_submit_data', function( $form_data ){

  if( ! my_nf_validation( $form_data ) ) { // Add check here.

    $errors = [
      __( 'An unexpected error occurred.', 'my-plugin' )
    ];

    $response = [
        'errors' => $errors,
    ];

    echo wp_json_encode( $response );
    wp_die(); // this is required to terminate immediately and return a proper response
  }

  // If no errors, be sure to return the $form_data.
  return $form_data;
});

Буду очень признателен за помощь.

1 Ответ

0 голосов
/ 27 апреля 2020

Документация ссылается на пользовательский фильтр WordPress, как определено плагином Ninja Forms. Фильтры - это функция WordPress Hooks, которая позволяет теме или плагину изменять функциональность другой темы или плагина. См. https://developer.wordpress.org/plugins/hooks/filters/

. К вашему вопросу подключаемый модуль Webhooks (официальное расширение форм ниндзя) не обязан использовать фильтр, на который вы ссылаетесь из документации.

Вместо этого вам нужно заменить «my_nf_validation ()» на вашу собственную определенную функцию, как показано в документации.

Ваша функция должна обрабатывать запросы API и обработку ответов. В примере документации пользовательская функция возвращает логическое значение.

...