将更多页面添加到作者页面

时间:2011-05-28 作者:EddyR

目前,我有以下更改author\\u base slug的代码。

/** ADD REWRITE RULES **/
function change_author_permalinks() {
   global $wp_rewrite;

   $wp_rewrite->author_base = \'profile\';
   $wp_rewrite->flush_rules();
}
add_action(\'init\',\'change_author_permalinks\');
例如,我如何在上面添加一个额外的“编辑”页面,即/profile/my user name/edit???

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

作者重写规则are filtered through author_rewrite_rules. 您可以在此处为模式添加规则author/([^/]+)/edit/?$, 但替换将取决于您希望如何创建edit 页一个简单的示例,将设置自定义查询变量并加载特定模板(如果设置了此变量):

add_action( \'author_rewrite_rules\', \'wpse18547_author_rewrite_rules\' );
function wpse18547_author_rewrite_rules( $author_rules )
{
    $author_rules[\'author/([^/]+)/edit/?$\'] = \'index.php?author_name=$matches[1]&wpse18547_author_edit=1\';
    return $author_rules;
}

add_filter( \'query_vars\', \'wpse18547_query_vars\' );
function wpse18547_query_vars( $query_vars )
{
    $query_vars[] = \'wpse18547_author_edit\';
    return $query_vars;
}

add_filter( \'author_template\', \'wpse18547_author_template\' );
function wpse18547_author_template( $author_template )
{
    if ( get_query_var( \'wpse18547_author_edit\' ) ) {
        return locate_template( array( \'edit-author.php\', $author_template ) );
    }
    return $author_template;
}
小提示:不要打电话flush_rules() 在每个init, 这是一项昂贵的手术。您只需要在重写规则更改时执行此操作。只需访问Permalinks设置页面,即可手动刷新规则。如果要使用重写规则,我建议您安装my Rewrite analyzer plugin.

结束