Intereting Posts
Получить значения из строки массива для работы с post__in Как реализовать JQueryUI-диалог в плагине WP? Детские страницы, отображающие только промежуточные Рекомендуемое изображение и изображение в сообщении Блокировать файлы PHP Nginx Неправильная тема и URL-адрес загрузки после миграции Попытка загрузить содержимое сообщения через AJAX Передача параметра из текущего URL-адреса для перенаправления на другой URL-адрес Удалить "Категория:" Что происходит, когда wp_cron деактивируется в WordPress? JQuery При нажатии кнопки удаляется короткий код Отправка формы с использованием Ajax для запуска запроса SQL Select на основе ввода пользователем из формы Запросить последние сообщения от авторов блога Пользовательский поиск метаданных сообщений с pre_get_posts мешает поиску WP Плагин: как сделать ссылки на странице администратора открытыми внутри панели администратора

Как превратить страницу 404 в автоматический поиск с информацией из URL-адреса?

Кажется, что все 404 реализации связаны с показом соответствующего контента. Я думаю, что мы можем сделать лучше, автоматически просматривая недостающее сообщение … Как это можно сделать?

Это можно сделать двумя простыми шагами.

  1. Обновите свой поиск по сайту с помощью подключаемого модуля, такого как Relevanssi (необязательно).

  2. Добавьте следующий код в functions.php или через фрагменты кода (thx to @Howdy_McGee и Russell Jamieson для идей!)

function wpse_204310() { global $wp_query; if( is_404() && !is_robots() && !is_feed() && !is_trackback() ) { $uri = $_SERVER['REQUEST_URI']; $clean = str_replace( "/", "%20", $uri ); $clean2 = str_replace( "-", "%20", $clean ); wp_redirect( home_url( "/?s={$clean2}" ) ); exit(); } } add_action( 'template_redirect', 'wpse_204310' ); 

Вот и все. Этот код будет анализировать URL-адрес заголовка блога и передавать его на страницу поиска. Все прозрачно для пользователя. Это предполагает простую структуру постоянной ссылки, такую ​​как domain.com/post-title

Вы можете захватить имя, которое они ищут на 404, и использовать template_redirect чтобы поместить это имя в поиск по умолчанию:

 function wpse_204310() { global $wp_query; if( is_404() ) { $slug = $wp_query->get( 'pagename' ); wp_redirect( home_url( "/?s={$slug}" ) ); exit(); } } add_action( 'template_redirect', 'wpse_204310' ); 

По умолчанию поиск по WordPress не самый лучший, и я не уверен, как этот фрагмент будет взаимодействовать с плагинами, которые пытаются улучшить поиск по умолчанию, но это одно из возможных решений.