2017-07-21 8 views
0

私はWordpress/Buddypressプロジェクトに取り組んでいます。グループのメンバーリストは、グループが非公開でログに記録されているメンバーがグループに属しているかどうかにかかわらず常に見えるようにしたいと考えています。進め方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'); 

しかし、それは動作しませんでした任意の提案を:

私は私がすることをしなかったので、NAVアイテムのアクセスと可視性を変更しなければならなかったことを考えていましたか?

答えて

1

私は、回避策を発見したすべてのI'amかなり完全に満足してますが...ない

まず、グループにメンバーリストを無効にします。

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に設定しますいつもここNAVアイテムを作り、我々はまだクリックでグループリストにアクセスすることはできません)

そして私は単に自分のメンバーリストを作成するカスタム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'); 

将来的に他の人に役立つことを願っています。進歩する良い方法を知っています。

関連する問題