WordPress函数:add_rewrite_tag 添加新的重写标记

江河/ 01月22日/ WordPress/ 浏览 344

函数原型:


add_rewrite_tag( string $tag, string $regex, string $query = ” )


添加新的重写标记。


$query参数是可选的。如果省略了它,则必须确保在“init”钩子上或之前调用它。这是因为$query默认为$tag=,为了使其工作,必须添加一个新的查询var。


此函数可用于使WordPress了解自定义查询字符串变量。通常,它与add_rewrite_rule()结合使用,为具有自定义模板的页面创建重写规则。


如果使用此函数声明已存在的重写标记,则将覆盖现有标记。


此函数必须在init或更早的时候调用。


参数说明:


$tag 新重写标记的名称


$regex 重写规则中用于替换标记的正则表达式


$query 要附加到重写的查询的字符串。必须以'='结尾


函数源码:


function add_rewrite_tag( $tag, $regex, $query = '' ) {
	// Validate the tag's name.
	if ( strlen( $tag ) < 3 || '%' !== $tag[0] || '%' !== $tag[ strlen( $tag ) - 1 ] ) {
		return;
	}

	global $wp_rewrite, $wp;

	if ( empty( $query ) ) {
		$qv = trim( $tag, '%' );
		$wp->add_query_var( $qv );
		$query = $qv . '=';
	}

	$wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
}


使用举例:


add_action('init', 'add_my_rewrites');
function add_my_rewrites() {
    add_rewrite_tag('%location%', '([^&]+)', 'location=');
    add_rewrite_rule('^goto/([^/]*)/([^/]*)/?','index.php?location=$matches[1]&name=$matches[2]','top');
}


发表评论

暂无评论,抢个沙发...

客服 工单