web-dev-qa-db-fra.com

Comment masquer un compte administrateur dans BuddyPress? (pour des raisons de sécurité)

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:

  1. Masquer le profil d'administrateur (c'est-à-dire le rendre visible uniquement par eux-mêmes, mais par personne d'autre).

  2. Empêcher l'activité de l'administrateur d'apparaître publiquement sur le site.

  3. 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).

6
Paul T.

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;

}

La source

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
}

La source

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?

4
Diana
// 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;
});
0
Ünsal Korkmaz

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:

0
ubernaut

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

la source

0
user1973842

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.
);
0
DrMosko