我真的不明白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)
我不知道,也许这只是我的实例,但这似乎是非常奇怪的行为,我不认为我用任何钩子或过滤器影响这个。