我在上有一个标准页面设置http://mysite.com/mypage/
我想在我的主题函数中设置一个重写规则,该规则接受任何URL,例如:
http://mysite.com/mypage/helloworld/
<;--当前显示“未找到”
并将其转化为:
http://mysite.com/mypage/?var=helloworld
<;--当前显示标准页面
添加注释:
“helloworld”是一个未知的变量值,因此我希望所有“/mypage/”URL都重写回来,例如:http://mysite.com/mypage/abc/
http://mysite.com/mypage/1231241/
http://mysite.com/mypage/sdfasfdadsf/
将全部重写回http://mysite.com/mypage/?var={path}
最合适的回答,由SO网友:david.binda 整理而成
由于问题被修改了,我修改了我的答案。这个任务相对简单,只需一个重写规则就可以完成,它将/mypage/string之后的所有内容转换为一个变量-我称之为var。由于这是通过hook添加到query\\u vars的,因此可以通过global $wp_query; echo $wp_query->var;
.
add_filter( \'query_vars\', \'binda_query_vars\' );
function binda_query_vars( $vars ) {
$vars[] = \'var\';
return $vars;
}
add_action( \'generate_rewrite_rules\', \'binda_rewrite_rules\' );
function binda_rewrite_rules( $wp_rewrite ) {
$mypage_id = 4; //setup your \'mypage\' ID
$wp_rewrite->rules = array(
\'mypage/(.+?)/?$\' => $wp_rewrite->index . \'?page_id=\'.$mypage_id.\'&var=\' . $wp_rewrite->preg_index( 1 ),
) + $wp_rewrite->rules;
}