如何为特定/自定义用户角色成员创建个人资料页面?

时间:2015-01-26 作者:Riffaz Starr

如果每个用户的角色是自定义角色,我将尝试为其创建一个配置文件页面。

我在我的网站上创建了一个自定义角色。现在,这是成员在站点上注册时分配给他们的默认角色。

我有contributors.phpauthors.php.如果我去www.mysite.com/authors它列出了所有用户,而不考虑角色。然后我用Author Base using generate_rewrite_rules 重写此URL。

现在如果我去www.mysite.com/mycustomrole 它列出了所有用户。这对我来说很好。

下一步是为每个成员创建配置文件页面。所以我创造了author.php

当我有下面的用户时,

我可以看到这样的配置文件页面。

如果我去www.mysite.com/authors/user1 它显示了他的个人资料www.mysite.com/authors/user2 它没有显示他的个人资料www.mysite.com/authors/user3 它显示了他的个人资料www.mysite.com/authors/user4 它没有显示他的个人资料因此,我只获得administrator 角色用户,而不是我的custom created role 用户。这是为什么。

目前,我的要求是:

我想获取个人自定义用户的URL,如:www.mysite.com/customrole/user1

  1. 我只想在该URL下显示自定义角色用户。但如果我也能在该url下显示其他角色用户,那就好了
如果不使用任何插件,我如何才能做到这一点?

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

您注意到您正在使用自定义帖子类型。

To see if that is the problem:

<为每个用户创建一个普通的“帖子”(不是自定义帖子类型)
  • 查看他们的页面是否突然出现
  • 如果是这样,那么您的作者页面很可能没有设置为显示自定义帖子。

    要解决这个问题,您可以在功能中使用以下内容。php文件(或更改作者页面上的查询):

    function my_show_special_posts_on_author( WP_Query $query ) {
        # Make sure you are only altering the query on the author page
        if ( $query->is_author() && $query->is_main_query() && !is_admin() ) {
            # Grab the current post types to be shown
            $types_to_show = $query->get(\'post_type\');
            $types_to_add = array( \'custom_post_type_1\', \'custom_post_type_2\' );
            if ( is_array($types_to_show) ) {
                # Already showing an array of types, add yours if not already included
                foreach ( $types_to_add as $post_type ) {
                   if ( !in_array($post_type, $types_to_show) ) {
                      $types_to_show[] = $post_type;
                   }
                }
            } else if ( empty($types_to_show) ) {
                # Strange. Not showing any types. Add yours anywise.
                $types_to_show = $types_to_add;
            } else {
                # A single one as a string, add it to your types to add then overwrite types to show
                $types_to_add[] = $types_to_show;
                $types_to_show = $types_to_add;
            }
            $query->set(\'post_type\', $types_to_show);
        }
    }
    add_action(\'pre_get_posts\', \'my_show_special_posts_on_author\');
    
    务必调整管路$types_to_add = array( ... );

    这将强制您的自定义帖子类型显示。

    结束