Изменить переменную запроса с s на q

Вопрос или проблема

Привет, у меня есть довольно необычная задача, с которой я не совсем уверен, как справиться. Я хотел бы изменить строку запроса, отображаемую в адресной строке, чтобы использовать “?q=” вместо “?s=”.

Я использую Elementor, а также Relevanssi. Я первоначально писал в Relevanssi, но, насколько я понимаю, теперь я должен изменить запрос перед его отправкой в Relevanssi, так что это более подходящее место для публикации.

Я рассматривал возможность изменения формы, а также использования PHP для перехвата и изменения запроса перед его отправкой в Relevanssi. Я готов создать кастомную форму отправки поиска или добавить некоторую логику в functions.php.

Я пробовал это (спасибо @msaari), что позволяет запросу успешно выполняться, если я вручную меняю s на q в адресной строке, но поиск по-прежнему по умолчанию ссылается на s, когда используется форма поиска.

add_action( 'parse_query', function( $query ) {
  if ( isset( $_REQUEST['q'] ) && ! empty( $_REQUEST['q'] ) ) {
    $query->set( 's', $_REQUEST['q'] );
    $query->is_search = true;
  }
} );

У меня не так много опыта в области поиска, поэтому любые советы или ресурсы будут очень полезны.

Спасибо!

Ответ или решение

Чтобы изменить параметр запроса в URL с «?s=» на «?q=» в WordPress с использованием плагинов Elementor и Relevanssi, вам потребуется внести изменения в обработку запросов и формы поиска. Ниже описаны шаги, которые помогут вам достичь этой цели.

1. Изменение формы поиска

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

Если у вас нет возможности редактировать форму через интерфейс Elementor, то вы можете использовать JavaScript для перехвата события отправки формы и изменения параметра запроса.

document.addEventListener('DOMContentLoaded', function() {
    const searchForm = document.querySelector('form'); // Укажите правильный селектор формы
    searchForm.addEventListener('submit', function(event) {
        const input = searchForm.querySelector('input[name="s"]'); // Замените на правильный селектор
        if (input) {
            input.name = 'q'; // Изменяем имя параметра на 'q'
        }
    });
});

2. Обработка запроса с помощью PHP

Следующий шаг заключается в изменении обработчика запросов в functions.php вашего шаблона. Вам нужно перехватить запросы и направить их на параметр s, когда q установлен.

add_action('pre_get_posts', function($query) {
    if (!is_admin() && $query->is_search && isset($_GET['q']) && !empty($_GET['q'])) {
        // Если имеется параметр 'q', заменим его значением параметра 's'
        $query->set('s', sanitize_text_field($_GET['q']));
    }
});

Этот код гарантирует, что когда пользователь вводит запрос в форму с параметром q, система сделает поиск по числу, переданному как значение q.

3. Тестирование изменения

После внесения этих изменений важно протестировать вашу форму поиска. Убедитесь, что при поиске по ключевому слову URL изменяется на ?q=ваш_поиск. Если все выполнено правильно, ваш сайт будет использовать новый параметр q для поисковых запросов, что позволит избежать путаницы с параметром s.

4. Рекомендации

  • Создание резервных копий: Не забудьте создать резервные копии ваших файлов перед внесением изменений.
  • Стилизация: При необходимости проверьте стилизацию и адаптацию форм поиска после изменений, чтобы убедиться, что пользовательский опыт остается на высоком уровне.
  • SEO оптимизация: Обратите внимание на метаданные и контент страниц результатов поиска, чтобы они также соответствовали новому параметру. Оптимизируйте их с использованием ключевых слов, связанных с вашими услугами или продуктами.

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

Оцените материал
Добавить комментарий

Капча загружается...