После сабмита Wordpress редиректит на 404
Сразу извинюсь за нубский вопрос, но что-то я залип.
Проблема в следующем: у меня есть форма с отправкой данных в пост, для этого подхватываю их из function.php
if (isset($_REQUEST['do_reviews']))
Тег form пустой, без action
Всё работает, всё отлично, но проблема в том, что после отработки скрипта меня редиректит на 404 страницу ( видимо, из-за того, что в юрл прописываются данные из формы ).
Как решить проблему? Если использовать header location, то не вызывается html для сообщения об успехе/неудаче.
Код из functions.php
add_action('wp', 'add_reviews_d');
function add_reviews_d()
{
if (isset($_REQUEST['do_reviews'])) {
$name = $_REQUEST['name'];
$stars = $_REQUEST['stars'];
$text = $_REQUEST['text'];
$title = $_REQUEST['title'];
$errors = array();
if ($stars < 1 or $stars > 5) {
$errors[] = "<div class='alert alert-danger' role='alert'>
<strong>Отзыв не добавлен!</strong> Оценка должна быть 1-5.
</div>";
}
elseif (empty($name)) {
$errors[] = "<div class='alert alert-danger' role='alert'>
<strong>Отзыв не добавлен!</strong> Укажите имя.
</div>";
}
elseif (empty($title)) {
$errors[] = "<div class='alert alert-danger' role='alert'>
<strong>Отзыв не добавлен!</strong> Название должно быть заполнено.
</div>";
} elseif (empty($text)) {
$errors[] = "<div class='alert alert-danger' role='alert'>
<strong>Отзыв не добавлен!</strong> Текст отзыва не должен быть пустым.
</div>";
}
if (!empty($errors)) {
foreach ($errors as $error) {
echo $error;
}
} elseif (empty($errors)) {
$post_id = wp_insert_post([
'post_type' => 'reviews',
'post_status' => 'draft',
'post_title' => wp_strip_all_tags($title),
'post_content' => wp_strip_all_tags($text),
'meta_input' => ['name' => $name, 'stars' => $stars],
]);
if (is_wp_error($post_id)) {
wp_send_json_error(['message' => $post_id->get_error_message()], 401);
} else {
exit();
echo "<div class='alert alert-success role='alert'>
<strong>Спасибо!</strong> Скоро мы опубликуем ваш отзыв.
</div>";
}
}
}
}
Форма:
<div class="collapse" id="email-form">
<div class="card card-body">
<form method="post">
<input type="text" placeholder="Ваше имя" name="name">
<input type="text" placeholder="Оценка (1-5)" name="stars">
<input type="text" placeholder="Название" name="title">
<input type="text" placeholder="Текст отзыва" name="text">
<button id="id" type="submit" name="do_reviews">Отправить</button>
</form>
</div>
</div>