重写规则不会像您要求的那样调用函数。WordPress比这灵活得多,因为您可能希望在页面处理过程中的任意一个不受限制的点运行代码,而不局限于处理重写规则时代码中的某个特定时刻。
退一步讲,重写规则的作用就像$_GET
可以通过URL传递数据,如domain.com/?id=123
. 区别在于id=
是由重写规则决定的,因此您可以有一个类似domain.com/123/
. 通常我们会保留id
在URL中,例如。domain.com/id/123/
避免与其他URL结构冲突,但这对于这个答案并不重要。
使用您的示例,假设您有一个国家的重写规则,并且您希望您的URL看起来像/nation/america/
或/nation/england/
. 下面是一个重写规则示例:
add_rewrite_rule( \'^nation/([^/]*)/?\', \'index.php?nation=$matches[1]\' );
要使用这些信息,您几乎可以
action 或
filter 之后
parse_query
. 这是设置查询变量后可用的第一个操作,因此这是您可以使用的第一个操作
get_query_var. 下面是一个示例:
function wpse_99414_get_nation() {
if ( $nation = get_query_var( \'nation\' ) ) {
# This is the equivalent to your f1 function
# $nation will either be \'america\', \'england\', or whatever else
# process it however you need!
}
}
add_action( \'parse_query\', \'wpse_99414_get_nation\' );
最后,请注意,为了像我们使用
nation
, 您需要注册它。下面是一个这样做的示例:
function wpse_99414_query_vars( $qv ) {
$qv[] = \'nation\';
return $qv;
}
add_filter( \'query_vars\', \'wpse_99414_query_vars\' );