Je travaille avec WordPress depuis 3 ou 4 ans, mais je suis nouveau chez BuddyPress.
Je voudrais cacher complètement le compte administrateur à BuddyPress pour des raisons de sécurité. Par exemple, avec un blog WordPress classique, j'aurais deux comptes distincts (un avec des privilèges d'administrateur qui resteraient cachés et un autre avec seulement un rôle d'éditeur pour publier tous les articles). De cette façon, le compte administrateur serait caché du public et quiconque tenterait de percer devrait deviner le mot de passe ET le nom d'utilisateur. Dans BuddyPress, cela n’est pas si facile, car le compte administrateur est très exposé au public.
J'ai réussi à exclure le profil administrateur du répertoire des membres en modifiant le fichier /bp-themes/bp-default/members/member_loop.php. (Oui, je sais que je ne devrais pas modifier le thème par défaut et créer un thème enfant ou autonome. J'y reviendrai une fois le problème résolu.) J'ai ajouté le paramètre & exclude = 1 (1 étant l'ID utilisateur de le compte administrateur) en tant que tel:
<?php if ( bp_has_members( bp_ajax_querystring( 'members' ).'&exclude=1' ) ) : ?>
Mais j'aurais besoin d'aide avec ce qui suit:
Masquer le profil d'administrateur (c'est-à-dire le rendre visible uniquement par eux-mêmes, mais par personne d'autre).
Empêcher l'activité de l'administrateur d'apparaître publiquement sur le site.
Ou ai-je manqué quelque chose d'autre aussi?
PS Je pense installer BuddyPress sur un réseau MultiSite, il est donc très important pour moi de ne pas exposer le compte super-administrateur de cette manière.
EDIT: Voici donc ce que j'ai proposé pour # 1 (il se trouve dans la page functions.php
du thème):
// Hide admin profile pages
add_action( 'wp', 'hide_profile_template', 1 );
function hide_profile_template() {
global $bp;
if(bp_is_profile && $bp->displayed_user->id == 1 && $bp->loggedin_user->id != 1) :
global $wp_query;
$wp_query->set_404();
status_header(404);
include(locate_template('404.php'));
exit;
endif;
}
Alors maintenant, j'ai toujours besoin d'aide pour cacher l'activité de l'administrateur (# 2).
J'ai trouvé ça:
Exclure les utilisateurs du répertoire des membres d'un réseau social basé sur BuddyPress
Nous devrons nous connecter au filtre
'bp_ajax_querystring'
.Le code suivant permettra d'exclure les utilisateurs du répertoire des membres. Ils seront toujours répertoriés dans la liste d'amis des autres utilisateurs avec lesquels ils sont amis.
add_action('bp_ajax_querystring','bpdev_exclude_users',20,2);
function bpdev_exclude_users($qs=false,$object=false){
//list of users to exclude
$excluded_user='1,2,3';//comma separated ids of users whom you want to exclude
if($object!='members')//hide for members only
return $qs;
$args=wp_parse_args($qs);
//check if we are listing friends?, do not exclude in this case
if(!empty($args['user_id']))
return $qs;
if(!empty($args['exclude']))
$args['exclude']=$args['exclude'].','.$excluded_user;
else
$args['exclude']=$excluded_user;
$qs=build_query($args);
return $qs;
}
Et en BP:
comment cacher l'activité de l'administrateur sur l'activité de Buddypress?
Placez ce code dans bp-custom.php et aucune activité de l'administration du site ne sera enregistrée, ni n'apparaîtra dans le widget Qui est en ligne/Membres récemment actifs.
add_action("plugins_loaded","bpdev_init_sm_mode");
function bpdev_init_sm_mode(){
if(is_site_admin())
remove_action("wp_head","bp_core_record_activity"); //id SM is on, remove the record activity hook
}
Je pense que vous pouvez fusionner les deux filtres et masquer Admin une fois pour toutes :)
UPDATE
Parce que ces hacks ne fonctionnent pas dans 1.6 this topic , ils suggèrent que cela peut fonctionner en utilisant l’ancienne barre d’administrateur de BuddyPress. Est-ce vrai?
// http://wordpress.org/extend/plugins/bp-ninja/
add_action('bp_init', function() {
global $bp;
if (is_super_admin()) {
//first remove the action that record the last activity
remove_action('wp_head', 'bp_core_record_activity');
//then remove the last activity, if present
delete_usermeta($bp->loggedin_user->id, 'last_activity');
}
});
// "Not recently active" yazısını super admin için kaldır
add_filter( 'bp_core_get_last_activity', function($last_active){
global $bp;
if ( bp_is_active( 'xprofile' ) ){
$last_active_bp_string = __( 'Not recently active', 'buddypress' );
if( ($last_active_bp_string == $last_active) && is_super_admin($bp->displayed_user->id)) {
$last_active = __('Network Admin');
}
}
return $last_active;
});
Découvrez comment faire cela. C’est un combo de ninja buddypress et de restauration de la barre d’administration. Le plug-in ninja fonctionne, mais ne peut pas être modifié pour le moment dans la nouvelle barre d’administration. Vous activez donc temporairement l'ancienne barre, basculez en mode furtif, puis réactivez la nouvelle barre.
Plus d'infos ici:
J'ai trouvé ce petit code soigné sur buddydev. Initialement utilisé pour masquer l'utilisateur actuel. Mais il est facile de changer pour cacher l'administrateur;
add_action( 'pre_user_query', 'devb_exclude_loggedin_user', 201 );
function devb_exclude_loggedin_user( $query ) {
//do not hide users inside the admin
if ( is_admin() && !defined('DOING_AJAX') )
return;
$qv = $query->query_vars;
global $wpdb;
//hide in my case user_id: 1
$query->query_where .= $wpdb->prepare(" AND {$wpdb->users}.ID !=%d ", 1);
}
Vient de retirer l'utilisateur admin de buddypress 1.9.2
voici comment je l'ai fait:
mon identifiant administrateur 2
au fichier: buddypress\bp-members\bp-members-template.php
cherchez la ligne 292 'exclude' => false,
et remplacez false
par votre ID utilisateur mon cas 2
:
// type: active ( default ) | random | newest | popular | online | alphabetical
$defaults = array(
'type' => $type,
'page' => $page,
'per_page' => 20,
'max' => false,
'page_arg' => 'upage', // See https://buddypress.trac.wordpress.org/ticket/3679
'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users
'exclude' => 2, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users
'user_id' => $user_id, // Pass a user_id to only show friends of this user
'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data
'meta_key' => false, // Only return users with this usermeta
'meta_value' => false, // Only return users where the usermeta value matches. Requires meta_key
'populate_extras' => true // Fetch usermeta? Friend count, last active etc.
);