根本区别在于:
在add_rewrite_rule()
添加特定规则,该规则被解释为add_rewrite_tag()
添加要在url结构中使用的占位符。然后使用此占位符生成多个规则例如,假设你是一家旅行社,在各个国家为酒店做广告。您可能希望酒店的url如下
www.example.com/hotels/UK/Balmoral
其中,国家(本例中为英国)是一个自定义的税收术语,而巴尔莫勒是一个酒店(post类型)。我们可以为此添加重写规则,但接下来必须为以下内容生成规则:
酒店本身,酒店的附件,酒店(帖子)的规则,它会覆盖多页等。生成这些规则可能会变得复杂。此外,我们可能会与WordPress自己的帖子类型规则竞争,这些规则是在注册帖子类型时设置的permastructure生成的。(无论如何,让WordPress来完成这项工作)。
这种“permastructure”(与您在permalink设置中为帖子设置的内容类似)决定了WordPress生成的重写规则。但是,由于我们需要一个包含一些未知(国家)的结构,我们需要对其进行解释,因此我们需要提供表单的占位符%country%
. (几乎与%category%
对于职位)。
例如:
add_action_init(\'init\',\'wpse71305_register_types\');
function wpse71305_register_types(){
//You\'ll need to register the country taxonomy here too.
//Add \'country\' tag.
add_rewrite_tag(\'%country%\', \'([^&/]+)\'));
//Register hotel post type with %country$ tag
$args = array(
...
\'has_archive\'=>true,
\'rewrite\' => array(
\'slug\'=>\'hotels/%country%\',
\'with_front\'=> false,
\'feed\'=> true,
\'pages\'=> true
)
...
);
register_post_type(\'hotel\',$args);
}
Note: WordPress不知道如何从
%country%
标记-你需要告诉它这样做。(我在下面链接的一篇文章中介绍了这一点)
最后,WordPress还将存储匹配的值,以便您可以通过get_query_var()
(标准重写规则中没有)。
您还可以创建用于帖子permastructure的标记(在Permalink设置页面中进行设置)。
通过添加标记,我们可以在永久结构中使用它。WordPress知道
期望的内容如何解释url(检查是否匹配)
如何解释值(即“UK”)