在Wordpress中,我设置了这样的永久链接结构:
/%category%/%postname%
创建自定义搜索页面后,我现在拥有以下 URL:
http://mypage.com/search?foo1=bar&foo2=&foo3=&foo4=
我有两个问题:
1)我怎样才能转换这个网址,以便我到达例如
http://mypage.com/search/foo1/bar
?
2)有没有办法删除“未使用”的参数? (
&foo2=&foo3=&foo4=
)
我找到了这篇文章,向我指出了Wordpress中的parse_request函数,以及这篇文章谈论了mod_rewrite。但不太确定如何进行,或者使用什么方法更好。
您可以使用 wordpress 的
parse_request()
函数或 mod_rewrite
两种方法来转换您的 url,但为了使其正常工作,您必须编写一个函数来捕获请求的 url 并将其转换为原始 url 来服务请求.
您可以使用重写规则,
这是一个简单的示例,说明如何注册新的重写规则,并将其传递给 PHP 文件进行渲染:
1。设置规则:
add_action( 'init', function() {
add_rewrite_rule( 'myparamname/([a-z0-9-]+)[/]?$', 'index.php?myparamname=$matches[1]', 'top' );
} );
2。刷新永久链接。转至 WP 管理 > 设置 > 固定链接 > 保存。添加此代码后,这不会自动发生
3.将查询参数列入白名单:
add_filter( 'query_vars', function( $query_vars ) {
$query_vars[] = 'myparamname';
return $query_vars;
} );
4。添加处理程序以将其发送到模板文件:
add_filter( 'template_include', function( $template ) { if ( get_query_var( 'myparamname' ) == false || get_query_var( 'myparamname' ) == '' ) { 返回$模板; }
return get_template_directory() . '/template-name.php';
});
参见:https://developer.wordpress.org/reference/functions/add_rewrite_rule/#comment-3503