要更改所有作者URL,通常需要更改author base, 然而,由于您需要多个作者库,因此我们必须做一些不同的事情。
这有两个部分-第一部分是让WordPress识别自定义作者页面的传入请求并正确路由它们。为此,我们将添加两个新的重写规则,它们在subscriber/
或photographer/
并将其作为author_name
到主查询。WordPress将处理这些is_author
请求,就像普通的作者页面一样。
function wpa_author_rewrite_rules(){
add_rewrite_rule(
\'subscriber/([^/]+)/?$\',
\'index.php?author_name=$matches[1]\',
\'top\'
);
add_rewrite_rule(
\'photographer/([^/]+)/?$\',
\'index.php?author_name=$matches[1]\',
\'top\'
);
}
add_action( \'init\', \'wpa_author_rewrite_rules\' );
请注意,在添加此代码后,需要刷新一次重写规则,以便它们生效。
第二部分是WordPress在使用API输出作者URL时生成正确的URL。修改WordPress输出通常通过过滤器完成,这里也是这样。我们通过author_link
滤器你会认出user_can
此处使用的函数用于检查$author_id
有subscriber
或photographer
角色,返回这些情况的自定义URL。
function wpa_author_link( $link, $author_id, $author_nicename ){
if( user_can( $author_id, \'subscriber\' ) ){
return home_url( \'subscriber/\' . $author_nicename . \'/\' );
} elseif( user_can( $author_id, \'photographer\' ) ) {
return home_url( \'photographer/\' . $author_nicename . \'/\' );
}
return $link;
}
add_filter( \'author_link\', \'wpa_author_link\', 10, 3 );