Intereting Posts
WordPress добавляет вопросительный знак к URL-адресу при использовании Hashtags в Nav Как добавить элемент меню в меню администратора Pods? Предложение для плагина Calendar Events Мой CPT не будет отображаться независимо от того, что я делаю Получение изображений из медиа-библиотеки и get_the_date () не работает Следующие / Предыдущие ссылки не работают в той же категории Можно ли использовать несколько значений в правиле перезаписи? Отображать пользователей из двух ролей в одном списке Плагин для создания неограниченных пользовательских коротких кодов? Как добавить интерактивную консоль python на свой сайт? Переадресация входа на определенную страницу профиля bp Избегайте обновления почты при отправке запроса POST или GET на post.php /wp-admin/install.php перенаправление на 123-reg удалить фото тег в rtmedia Как я могу скопировать короткий код WordPress в мою тему?

Сообщение отправляется с использованием короткого кода и init

Я пытаюсь найти лучший способ вернуть ошибки на страницу после формы, представленной с помощью короткого кода.

Я добавляю функцию для 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 до содержимого / короткого кода. Я могу сделать это следующими способами:

  1. Перенаправить обратно на страницу, устанавливая ошибки в URL (запросы vars)
  2. Локализуйте переменную для ошибок и используйте ее в коротком коде
  3. Отфильтруйте the_content и добавьте ошибки
  4. Хранить ошибки в сеансе

Я предпочел бы, чтобы URL-адрес остался прежним, поэтому вариант один отсутствует. Вариант два работает, но он чувствует себя слегка «грязным», наряду с вариантом 3, который невелик. Вариант 4 может работать, хотя WordPress не использует сеансы.

Это будет использоваться вместе с проверкой JS (или когда JS отключен).

Может быть, мне не хватает очевидного способа сделать это?

Какие-либо предложения?

Благодаря!