#php #wordpress #forms
Вопрос:
Мне нужно просто перевести поисковый запрос из a form
в переменную. Я настроил базовый form
в файле шаблона, этот файл шаблона затем связан со страницей администратора WordPress. Проблема, с которой я сталкиваюсь, заключается в том, что form
он не отправляется, поэтому я не могу использовать переменную. Если я удалю get_header();
из шаблона, то форма будет отправлена, но, очевидно, это нарушит работу wordpress.
Вот моя анкета:
<form action="<?php the_permalink(); ?>" method="post" autocomplete="off" >
<label>
<input placeholder="Search…" name="qcsearch" type="text">
</label>
<input type="submit" name="submit" value="Submit">
</ul>
</form>
Я попытался исключить действие, используя имя шаблона, которое является qccerts.php и используя $_SERVER['PHP_SELF']
Вот что я пытаюсь сделать с выводом:
if(isset($_POST['submit'])){
$searchterm = $_POST["qcsearch"];
}else{
$searchterm = '';
}
Это в основном простой поиск, который сообщает пользователям, есть ли файл по имени, которое они ищут. Поэтому мне нужно заполнить $searchterm
его, чтобы я мог использовать его позже на странице.
Любая помощь будет признательна.
Комментарии:
1. Пожалуйста, поделитесь более подробной информацией — что вы подразумеваете под «форма не отправляется»?
2. Извините, я не уверен. Я нажимаю кнопку «Отправить», и когда я повторяю запрос $searchterm, ничего не отображается. Когда я удаляю wp_header, он показывает
3. Что вы пытались сделать, чтобы решить эту проблему? Если вы сбрасываете
$_POST
, что в этом содержится?4. Я только что попробовал print_r($_POST) и var_dump($_POST), но они пусты. Это странно, потому что, если я удалил wp_header, он работает, поэтому форма должна работать, но какая-то вещь WordPress останавливает ее
5. Возможно, вы захотите попробовать добавить
enctype="multipart/form-data"
в качестве атрибута в<form>
тег
Ответ №1:
Трудно определить, в чем именно заключается ваша проблема, без воспроизводимого сценария. Например, не видя вашей проблемы, я не уверен, действительно ли form
она вообще не отправлена или отправлена, но вы не видели, как она выполнялась, или есть какой-то Javascript, который препятствует отправке вашей формы. Существует вероятность того, что форма также отправлена на неправильное действие.
Однако, если вы намерены сохранить поисковый запрос на всех страницах, вы можете добавить его в сеанс. Давайте представим себе эти функции:
function storeSearchTerm($searchTerm) {
$_SESSION["searchterm"] = $searchTerm;
}
function getSearchTerm() {
return isset($_SESSION["searchterm"]) ? $_SESSION["searchterm"] : "";
}
Вызывая эти функции, вы можете управлять поисковым запросом, инициализируя его с помощью storeSearchTerm($_POST["qcsearch"])
или что-то в этом роде.
Что касается вашей фактической формы, если она не работает, то вы можете submit
ввести форму Javascript
, например
document.getElementById("myForm").submit();
и убедитесь, что это запускается либо с помощью onclick
атрибута, либо click
с помощью прослушивателя событий на кнопке, созданной с помощью addEventListener
.
Редактировать
Оказывается, имя класса было неправильно сформировано (проблема с учетом регистра).
Комментарии:
1. Привет, мне не нужно хранить результат на разных страницах. Его используют только в качестве быстрого инструмента, чтобы показать, есть ли что-то, с чем можно продолжить. Я посмотрю на javascript
2. @snookian вы заглянули на вкладку «Сеть» ваших инструментов разработчика в браузере? Если вы нажмете на кнопку отправить, появится ли новая запись в таблице?
3. Не знаю, как читать инструменты разработчика, но, похоже, никаких новых записей не появляется. Выдергиваю волосы из-за этого. Потому что, если я удалил get_header(); или wp_head из заголовка, он работает, так что его ovo как-то связано с wordpress
4. «Не знаю, как читать инструменты разработчика» — вот главная проблема. Если бы вы знали, как это читать, то было бы намного легче определить, в чем заключаются проблемы. Итак, на вашем месте я бы сначала очень тщательно научился использовать инструменты разработчика и только потом вернулся к вопросу, вооружившись этими знаниями. Вы не можете сражаться с драконом с помощью соломинки. Вам нужно надлежащее оборудование.
5. лол…спасибо… Оказывается, название класса вызывало проблему, поэтому я изменил его, и все это сработало.