2017-07-21 2 views
0

Ich arbeite an einem Wordpress/Buddypress-Projekt und möchte die Mitgliederliste der Gruppe immer sichtbar machen, ob die Gruppe privat ist und das geloggte Mitglied zur Gruppe gehört.Wordpress Buddypress zeigen immer Mitgliederliste der Gruppe

Ich dachte, ich Zugang und Sichtbarkeit der nav Elemente zu ändern hatte, so tat ich, dass:

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'); 

Aber es hat nicht funktioniert ...

Jeder Vorschlag, wie es weitergehen?

Antwort

1

fand ich eine Abhilfe, Ich bin nicht ganz zufrieden, aber völlig ...

Zu allererst Mitglieder Liste Gruppe deaktivieren:

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');` 

(btw, den Wert auf true setzen tatsächlich machen die die nav Elemente immer hier, aber wir können noch nicht die Gruppenliste Zugriff auf Klick)

Und dann füge ich einfach eine benutzerdefinierte BP-Gruppe Erweiterung meiner eigenen Mitglieder Liste zu machen:

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'); 

Ich hoffe, es wird anderen in der Zukunft helfen, und ich bin immer noch offen für den guten Weg, um fortzufahren.

Verwandte Themen