Я пытаюсь найти лучший способ вернуть ошибки на страницу после формы, представленной с помощью короткого кода.
Я добавляю функцию для init
такую как –
add_action( 'init', 'contact_form_process_post' ); function contact_form_process_post() { if( isset( $_POST['unique_hidden_field'] ) ) { // process $_POST data here $errors = new WP_Error(); if( empty( $_POST['full_name'] ) ) { $errors->add( 'invalid', __( 'Full name cannot be empty' ) ); } if( count( $errors->get_error_messages() ) == 0 ) { wp_redirect( 'some_url '); exit(); } else { // Return errors here } } }
Это отлично работает, если ошибок нет (т. Е. Все поля являются допустимыми), но если некоторые поля пустые, он должен вернуться к форме с этими ошибками. Если они действительны, они перенаправляются на страницу подтверждения.
Проблема заключается в возврате ошибок от init
до содержимого / короткого кода. Я могу сделать это следующими способами:
the_content
и добавьте ошибки Я предпочел бы, чтобы URL-адрес остался прежним, поэтому вариант один отсутствует. Вариант два работает, но он чувствует себя слегка «грязным», наряду с вариантом 3, который невелик. Вариант 4 может работать, хотя WordPress не использует сеансы.
Это будет использоваться вместе с проверкой JS (или когда JS отключен).
Может быть, мне не хватает очевидного способа сделать это?
Какие-либо предложения?
Благодаря!