有没有人能解释一下添加重写标签的第三个参数的作用

时间:2014-10-01 作者:Collizo4sky

你能解释一下第三个函数参数吗queryreplace 属于add_rewrite_tag.

请用代码示例进行解释。

更新

我在下面编写这段代码是为了创建一个包含slug的页面your-profile 使用url显示用户的配置文件信息example.com/profile/user-name

function custom_rewrite_tag() {

add_rewrite_tag(\'%who%\', \'([^&]+)\');
add_rewrite_rule(\'^profile/([^/]*)/?\',\'index.php?pagename=your-profile&who=$matches[1]\',\'top\');
}
add_action(\'init\', \'custom_rewrite_tag\', 10, 0);
然后我捕获用户名,如下所示:

$who = (get_query_var(\'who\')) ? get_query_var(\'who\') : 0;
    if($who){
        $user = get_user_by(\'login\', $who);

        print_r($user);
    }   
上面的代码工作正常。使用%who% 因为我不会在WP permaling设置中使用?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

第三个参数告诉WordPress要使用/匹配的查询变量。

我们可以通过以下请求使用这些公共查询变量查询WordPress数据库example.com/?foo1=bar1&foo2=bar2 但我们通常想把它改写成更漂亮的东西,比如example.com/bar1/bar2/.

在法典中there\'s a list 默认可用的公共查询变量:

attachment
attachment_id
author
author_name
cat
category_name
comments_popup
day
error
feed
hour
m
minute
monthnum
name
p
page_id
paged
pagename
post_parent
post_type
preview
second
static
subpost
subpost_id
tag
tag_id
tb
w
year
示例1:如果我们创建一个自定义分类法,例如country, 然后,我们将自动获得:

add_rewrite_tag( \'%country%\', \'([^/]+)\', \'country=\' );
其中,第三个参数是必须以结尾的查询变量=.

示例2:

如果要使用permalink结构example.com/article-1984 对于post 仅post类型,然后我们可以引入自定义重写标记%article-pid%:

add_action( \'init\', function(){
    add_rewrite_tag( \'%article-pid%\', \'article-([0-9]+)\', \'p=\' );
});
请注意,这里的查询变量是p 它必须以=.

请求example.com/article-1984 因此被解释为example.com/?p=1984, 刷新重写规则后,例如通过重新保存永久链接设置。

然后我们必须修改get_permalink() 相应的功能:

add_filter( \'post_link\', function( $post_link, $post ) {
    return str_replace( \'%article-pid%\', \'article-\' . $post->ID, $post_link );
}, 10, 2 );
在这种情况下,永久链接设置是这样的:

%article-pid%

如果我们使用article-%post_id% 相反,它似乎打乱了其他自定义帖子类型和分类法的重写规则。

结束

相关推荐