我会尽力解释的。。。
我的主页上有一个搜索表单:
<form role="search" method="get" id="searchform" class="form" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<label class="u-visuallyHidden" for="s">Search for property:</label>
<input type="search" class="form-input search-bar-input" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="enter location here" autocomplete="off" />
<button type="submit" class="btn search-bar-btn" id="searchsubmit">
<span class="u-verticalAlignMiddle"><i class="icon-search"></i> <span class="u-visuallyHidden">Search</span></span>
</button>
</form>
在我的搜索中还有更深入的搜索表单。php的模板,其中包含许多与某些用户输入选择器相关的隐藏字段。然后,搜索结果采用
$_GET
请求和我构建自定义
$wp_query
.
一切正常。。。但是,我想将我的搜索URL更改为:
http://mydomain.dev/student/?s=
我尝试将操作更改为
esc_url( home_url( \'/student/\' ) )
但当输入搜索词时,我只得到一个404。
我已经使用了“template\\u redirect”操作和重写规则,但我不想要很好的永久链接,因为我的优化搜索表单添加了许多额外的URL参数。例如,用户搜索可以生成以下URL:
http://mydomain.dev/?s=&letmc_type=professional&custom_locations=SomeCity&min_bedrooms=2&price_min=60&price_max=70
此外,WordPress是否有更好的方法来利用查询参数,而不是
$_GET
超全局?
SO网友:davey
以上这些都不适合我。通过使用search\\u rewrite\\u rules筛选器覆盖搜索重写规则,找到了另一个解决方案。
1-将其添加到函数中。主题的php:
add_filter( \'search_rewrite_rules\', function($rules) {
$new_rules = [];
// New search slug here
$new_search_slug = \'zoeken\';
foreach ($rules AS $key => $value){
$new_rules[str_replace(\'search\', $new_search_slug, $key)] = $value;
}
return $new_rules;
});
2-将永久链接保存在设置下的WordPress admin中->;Permalinks。
现在是页面https://www.mywebsite.com/zoeken/searchterm 正在显示搜索结果页面。
SO网友:Adebowale
这在我的网站上非常适合我:nnn.com.ng. 其他解决方案为我抛出404错误。
/**
* initiate a change of the wordpress default search page slug to the new search page slug.
*/
add_action( \'init\', \'dsfs\' );
function dsfs()
{
$GLOBALS[\'wp_rewrite\']->search_base = \'%your_search_string%\';
}
/**
* redirect default search page slug to the new search page slug.
*/
function wpcs_url() {
if ( is_search() && ! empty( $_GET[\'s\'] ) ) {
wp_redirect( home_url( "/your_search_string/" ) . urlencode( get_query_var( \'s\' ) ) );
exit();
}
}
add_action( \'template_redirect\', \'wpcs_url\' );
您需要在“your\\u search\\u string”(例如%student%)之前和之后添加“%”,它才能工作。如果是带有缓存插件的生产站点,则可能需要刷新缓存。