Wordpress何时执行search.php

时间:2017-01-16 18:53:35

标签: php wordpress search

我真的不明白Wordpress的搜索是如何工作的。我的最终问题是我通过循环和search.php$wp_query->the_post()中显示搜索结果,但它只在主页上运行此代码。在'/'。我需要它在'/search'等页面上显示搜索结果,以便搜索网址出现在分析中。

search.php仅在我们位于'/'页面并且参数?s=terms

时才会被评估

如何让它在另一个页面上运行? (我search.php找不到searchform.php的导入get_search_form() search-page.php

我有一个模板(search-page.php)用于按https://codex.wordpress.org/Creating_a_Search_Page创建的搜索页面,但该页面看起来希望您的搜索页面显示一个表单,然后搜索结果会将您发送给主页。

我是否只需要将所有搜索结果代码移至search-page.php

如果我移动所有代码,Wordpress的默认搜索查询是否会使用?s=参数在?s=上运行?

我已经尝试将搜索结果代码放在一个单独的模板文件中,但我不确定我是否做错了,或者您是否无法让Wordpress的内部搜索触发RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^$ /search/?%{QUERY_STRING} [NC,R,L] 参数当你不在主页上时。

这是一些我不明白的奇怪行为:

我找到了.htaccess重写规则,并根据此页面为我创建了一个:http://wpengineer.com/2258/change-the-search-url-of-wordpress/

我的目前是:

searchform.php

现在,在搜索'/'(将输入中的文字发送到url: /search/?s=test)时,我得到RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^$ /search/%1/? [NC,R,L]

这是我想要的网址,但提供的网页就好像Wordpress已经执行了搜索并返回了最高结果而只是向我显示了这一点。

如果我使用该页面的重写:

url: /search/term/

我得到一个空白页面(默认模板)RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^$ /search/%1/?%{QUERY_STRING} [NC,R,L]

如果我使用这个修改版本:

search.php

我从url: /search/term/?s=term things_to_do = [ ("eat", foods[randint(0,20)]), # less complex than the singleton lists in your code ("do", sports[randint(0,60)]), ("drink a", coffees[randint(0,20)]) ] verb, obj = things_to_do[randint(0,2)] print "Whilst in town you decided to {v} {o}".format(v=verb, o=obj)

获取搜索结果

我不知道,也许这只是我的实例,但这似乎是非常奇怪的行为,我不认为我用任何钩子或过滤器影响这个。

0 个答案:

没有答案