Где проверяется параметр поиска Wordpress? - PullRequest
0 голосов
/ 08 сентября 2018

Это будет звучать глупо, но я в тупике. Как я узнал, поисковая форма распознается в Wordpress, когда имя ввода дается как 's'. Действие - это всегда домашний URL. Но нигде в index.php или page.php (в зависимости от настроек вашей домашней страницы) он не проверяет параметр 's'. Где именно Wordpress проверяет этот параметр?

Я пытаюсь вывести результат поиска на определенной странице, но он не работает, когда я устанавливаю значение 'action' для чего-либо, кроме Home URL. Я надеюсь, что смогу лучше понять, как работает поиск, и, возможно, реализовать такую ​​же проверку параметров на моей странице Howdy_McGee проверить это

1 Ответ

0 голосов
/ 09 сентября 2018

WordPress не требует, чтобы поиск возвращался на домашнюю страницу. s запрос var является зарезервированным ключевым словом для поиска в WordPress. Что вы можете сделать, это изменить форму поиска, чтобы включить текущий URL:

global $wp;

<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( $wp->request ) ); ?>">

Делая это на странице терминов (архив таксономии), он также ограничивает поиск этим конкретным термином без какой-либо дополнительной работы. Вы можете изменить это в своем шаблоне searchform.php. Если у вас его нет, вы можете получить его из файлов тем 2017 года .


WordPress анализирует большинство запросов через файл class-wp-query.php, передаваемый классом / объектом WP_Query. Поиск обрабатывается WP_Query::parse_search()

Если вы хотите изменить поиск или действительно какие-либо запросы, вы всегда можете использовать pre_get_posts, чтобы изменить объект запроса, прежде чем он будет запрошен из базы данных. Если вы хотите изменить SQL до его запроса, вы можете использовать хук posts_clauses, обычно это используется для включения пользовательских таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...