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

Я настроил тему, и у меня возникли проблемы с результатами поиска при использовании запросов из нескольких слов. Сайт работает по адресу www.abetterworldbydesign.com.

Поиск одного слова работает должным образом.

Поиск нескольких слов, которые должны были дать результаты, показывает пустые результаты.

Код для searchform.php ниже.

<form id="searchform" name="searchform" method="get" action="<?php echo home_url(); ?>">
    <div>
        <input type="text" id="s" name="s" />
        <input type="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'richwp' ); ?>" />
    </div>
</form>

Мой код в search.php для инициализации WP_Query в точности соответствует коду, указанному в кодексе. Полный код для search.php в pastebin.


person Mike Eng    schedule 25.07.2011    source источник
comment
Также задан вопрос в Wordpress Answers: wordpress.stackexchange.com/questions/24102/   -  person Mike Eng    schedule 27.07.2011
comment
почему бы не дать поиск энергетику - погуглите. Пример запроса сайта Zero Energy Usage: www.abetterworldbydesign.com: google.com/< /а>   -  person Igor    schedule 27.07.2011
comment
В настоящее время это звучит так: хорошо, мы полагаемся на поиск в Google, который гарантирует самые надежные результаты. Как насчет этого, поисковая фраза взята из PDF: google.com/noreferrer   -  person Igor    schedule 27.07.2011
comment
Тот факт, что поиск работает, когда вы заменяете пробел (+) амперсандом (&), совсем не странный. Когда URL равен ?s=press+releases, имеется один аргумент s со значением press releases. Когда URL равен ?s=press&releases, в URL есть два аргумента: один называется s со значением press, другой называется releases и имеет пустое значение.   -  person binaryLV    schedule 28.07.2011


Ответы (2)


Я предполагаю, что вам нужно декодировать поисковый запрос, который вы извлекаете из строки запроса, например: $search_query[$query_split[0]] = urldecode($query_split[1]). Хотя вы, вероятно, могли бы просто использовать функцию Wordpress get_query_var вместо всего этого кода.

person Richard M    schedule 28.07.2011
comment
Вот оно. Хорошо сделано. Странно, что в документации WordPress это не указано — интересно, изменилось ли это требование в последней версии WP и не обновлено в документации. Я бы наградил вас прямо сейчас, но Stack Overflow говорит, что мне нужно подождать 3 часа. - person Mike Eng; 28.07.2011
comment
Документация Wordpress Codex представляет собой вики, так что каждый может добавлять в нее дополнения, и лучше относиться к ее содержанию немного скептически. Код, который вы использовали, был опубликован другим пользователем более года назад (вы можете просмотреть историю страниц, если войдете в систему), и я не совсем уверен, какую проблему он должен решать. - person Richard M; 28.07.2011
comment
Отлично. Я обновил Кодекс WordPress с помощью этого исправления. codex.wordpress.org/ - person Mike Eng; 28.07.2011

Строка 16 вашего поиска PHP

$query_args = explode("&", $query_string);

Попробуйте изменить на это

$query_args = explode(" ", $query_string)
person abney317    schedule 27.07.2011
comment
Пробовал это. Без изменений. Я также попытался изменить строку 16 search.php на $query_args = explode("+", $query_string);, но это тоже ничего не изменило. - person Mike Eng; 27.07.2011
comment
Странный. Я был почти уверен, что это сработает. Я посмотрю, смогу ли я увидеть что-нибудь еще. - person abney317; 27.07.2011
comment
Вероятно, это мало что даст, но проверьте строку 42 этого search.php - ваш комментарий комментирует конец тега php. - person abney317; 27.07.2011
comment
Хороший улов. Я исправил строку 42, но вы были правы - она ​​ничего не сделала. - person Mike Eng; 28.07.2011
comment
Что касается строки 16, я использую код, взятый непосредственно из документации WordPress: codex.wordpress.org/ - person Mike Eng; 28.07.2011
comment
Не могли бы вы выложить свой файл rich.inc.php? - person abney317; 28.07.2011