Wordpress Buddypress始终显示成员列表组

时间:2017-07-21 07:39:57

标签: wordpress buddypress members

我正在开发一个Wordpress / Buddypress项目,我想让该组的成员列表始终可见,无论该组是否为私有且该记录成员属于该组。

我以为我必须更改导航项的访问权限和可见性,所以我这样做了:

function change_access_group_nav_tabs() {
    if(bp_is_group()) {
        buddypress()->groups->nav->edit_nav( array('visibility' => 'public'), 'members', bp_current_item() );
        buddypress()->groups->nav->edit_nav( array('access' => 'anyone'), 'members', bp_current_item() );
    }
}
add_action( 'bp_actions', 'change_access_group_nav_tabs' );

但它没有用......

有任何建议如何进行?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方法,我完全不满意,但......

首先,禁用组上的成员列表:

function change_access_group_nav_tabs() {
    if(bp_is_group()) {
buddypress()->groups->nav->edit_nav( array( 'user_has_access' => false ), 'members', bp_current_item() );
    }
}
add_action( 'bp_actions', 'change_access_group_nav_tabs' );`

(顺便说一下,将值设置为true实际上会使导航项始终在此处,但我们仍然无法在点击时访问组列表)

然后我只需添加一个自定义BP组扩展来制作我自己的成员列表:

    class Group_Extension_List_Members extends BP_Group_Extension {
      function __construct() {
        $args = array(
          'slug' => 'members-list',
          'name' => 'Membres',
          'access' => array( 'anyone'),
          'show_tab' => array( 'anyone'),
          'nav_item_position' => 12,
          'screens' => array(
            'create' => array(
              'enabled' => false
            ),
            'edit' => array(
              'enabled' => false
            ),
          )
        );
        parent::init( $args );
      }
      function display( $group_id = NULL ) {
        //Remove user who do not belong to the group on members loop
        function filter_for_groups( $members_template_has_members, $members_template, $r ) {
          for ($i=sizeof($members_template->members)-1; $i >= 0 ; $i--) {
            $user_id = $members_template->members[$i]->id;
            if(!groups_is_user_member( $user_id, bp_get_group_id() )){
              $members_template->member_count = $members_template->member_count-1;
              array_splice($members_template->members, $i, 1);
            }
          }
          if ($members_template->member_count <= 0) {
            return '';
          } else {
            return $members_template_has_members;
          }
        };
        add_filter( 'bp_has_members', 'filter_for_groups', 10, 3 );

        require('/Your/theme/custom/members/loop/members-loop.php');
      }
    }
    bp_register_group_extension( 'Group_Extension_List_Members' );

希望将来能帮助其他人,我仍然愿意知道继续前进的好方法。