下面是一个示例template_redirect
如果prm1
已设置查询变量:
// set up the rewrite
add_action( \'init\', \'wpse36736_setup_rewrites\' );
function wpse36736_setup_rewrites(){
add_rewrite_rule( \'snpv/([^/]+)\', \'index.php?prm1=$matches[1]\', \'top\' );
}
// add query var
add_filter(\'query_vars\', \'wpse36736_query_vars\');
function wpse36736_query_vars( $query_vars ){
$query_vars[] = \'prm1\';
return $query_vars;
}
// check the query var on template_redirect
add_filter( \'template_redirect\', \'wpse36736_template_redirect\' );
function wpse36736_template_redirect(){
global $wp_query;
if( $wp_query->get( \'prm1\' ) ):
include( get_template_directory() . "/prm1.php" );
exit();
endif;
}
然后您可以访问
prm1
在脚本中,通过:
$prm1 = get_query_var( \'prm1\' );
唯一奇怪的是WordPress解释这个查询的方式,3.3中的行为似乎与以前的版本有所不同。如果您检查全球
$wp_query
为这些请求中的任何一个设置变量,所有内容都会被填充,就像它是主贴子页面一样
is_404
为false。我记得以前我想帮忙的时候不是这样的
this question.
无论如何,在这种情况下,我通常会创建一个页面snpv
, 并将重写规则更改为\'index.php?pagename=snpv&prm1=$matches[1]\'
.