创建自定义公共用户页面

时间:2013-03-15 作者:Pat

我想开发一个插件,允许我有自定义的用户页面。我非常喜欢作者存档模板处理URL:/author/username的方式。我不想重写author_base 因为我想保持功能不变。

我想在我的插件中复制干净的URL布局,这样当用户转到/users/username时,它将转到我的自定义模板。我想知道是否有人有如何从URL正确解析用户名的示例,以便我可以从插件中查找用户数据并显示我的模板。

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

我在这里找到了@bybloggers的答案。https://wordpress.stackexchange.com/a/58793/12920

我稍微修改了他的代码以适应我的需要,但这正是我所需要的代码:

// Create the query var so that WP catches the custom /member/username url
function userpage_rewrite_add_var( $vars ) {
    $vars[] = \'member\';
    return $vars;
}
add_filter( \'query_vars\', \'userpage_rewrite_add_var\' );

// Create the rewrites
function userpage_rewrite_rule() {
    add_rewrite_tag( \'%member%\', \'([^&]+)\' );
    add_rewrite_rule(
        \'^member/([^/]*)/?\',
        \'index.php?member=$matches[1]\',
        \'top\'
    );
}
add_action(\'init\',\'userpage_rewrite_rule\');

// Catch the URL and redirect it to a template file
function userpage_rewrite_catch() {
    global $wp_query;

    if ( array_key_exists( \'member\', $wp_query->query_vars ) ) {
        include (TEMPLATEPATH . \'/user-profile.php\');
        exit;
    }
}
add_action( \'template_redirect\', \'userpage_rewrite_catch\' );
在这之后functions.php 文件,我必须重新保存永久链接。

有时,重新保存永久链接并不能百分之百地完成工作,也不能浏览www.mysite。com/member/username将为404,因此我必须手动刷新规则,将其放入functions.php 并加载我的网站一次。然后删除它,这样我就不会每次加载站点时都运行它,因为这是不必要的开销。

// Code needed to finish the member page setup
function memberpage_rewrite() {
     global $wp_rewrite;
     $wp_rewrite->flush_rules();
}
add_action(\'init\',\'memberpage_rewrite\');

结束

相关推荐