Прерывание поиска WordPress после апострофа

#wordpress

#wordpress

Вопрос:

Я пытаюсь отладить некоторое поведение на моем сайте в отношении поиска. Происходит то, что я захочу найти что-то вроде: What's your Customers' Love Language? , и оно отобразит его, если я введу What' . Проблема в том, что как только я набираю что-либо после апострофа, он внезапно не может найти мой пост.

Это происходит для всех сообщений с таким заголовком.

Вот код для моей формы поиска (с использованием этой темы):

     <div class="search">
                <form role="search" action="<?php echo esc_url(home_url('/')); ?>" method="get">
                    <input type="text" name="s" class="<?php echo implode(' ', $classes); ?>" value="<?php the_search_query(); ?>" placeholder="<?php _e('Search...', 'bunyad'); ?>"/>
                    <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
                </form>
            </div> <!-- .search -->
  

Странно то, что он распознает апострофы, поэтому я не думаю, что мне нужно выполнять очистку специальных символов. Он использует поиск по умолчанию в WP без добавления дополнительных материалов, так что я действительно в тупике.

Любая помощь, которая может быть предложена, будет высоко оценена. Спасибо

Ответ №1:

Кажется, что WordPress запускает wptexturize() функцию, которая преобразует кавычки в интеллектуальные кавычки, поэтому вместо ' того, чтобы вы видите , поэтому, когда вы ищете what’s , ничего не будет возвращено, потому что, хотя сообщение написано так, на самом деле оно написано what's .

Способ исправить это — запретить запуск этой функции, поместив add_filter('run_wptexturize', '__return_false'); ваш function.php файл.

Смотрите здесь для получения дополнительной информации:

WordPress заменяет одинарные кавычки на недружественные для поиска

Ссылка на код — wptexturize()

Отключить wptexturize()