web-dev-qa-db-ja.com

BuddyPressの管理者アカウントを隠すには?(セキュリティ上の理由から)

私は過去3〜4年間WordPressを使用してきましたが、私はBuddyPressに慣れていません。

セキュリティ上の理由から、管理者アカウントをBuddyPressから完全に隠したいと思います。たとえば、通常のWordPressブログでは、2つの別々のアカウントがあります(1つは非表示のままの管理者権限を持ち、もう1つはすべての記事を公開するための編集者役割のみを持つ)。そうすれば、管理者アカウントは一般から隠され、侵入しようとする人は誰でもパスワードとユーザー名の両方を推測しなければならなくなります。 BuddyPressでは、管理者アカウントは一般に公開されているため、これはそれほど簡単ではありません。

私がやれたことの1つは、/ bp-themes/bp-default /members/member_loop.phpファイルを編集して、管理者プロファイルをmembersディレクトリから除外することです。 (はい、デフォルトのテーマを編集して、代わりに子テーマやスタンドアロンテーマを作成しないでください。これが解決されたら、それを実現します。)&exclude = 1パラメーターを追加しました。管理者アカウント)など

<?php if ( bp_has_members( bp_ajax_querystring( 'members' ).'&exclude=1' ) ) : ?>

しかし、私は以下のようにいくらか助けが必要です:

  1. 管理者プロファイルを非表示にする (つまり、自分自身にのみ表示され、他の人には表示されないようにする)。

  2. 管理者のアクティビティがサイトに公開されないようにする。

  3. それとも私は他の何かを欠場しましたか?

PS。 BuddyPressをMultiSiteネットワークにインストールすることを考えているので、このような方法でスーパー管理者アカウントを公開しないことが非常に重要です。

編集:だからここに私が#1のために思い付いたものです(それはテーマのfunctions.phpページに入ります):

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

それで今/私はまだ 管理活動を隠す (#2)の助けが必要です。

6
Paul T.

私はこれを見つけました:

BuddyPressベースのソーシャルネットワーク上のメンバーディレクトリからユーザーを除外する

'bp_ajax_querystring'フィルタにフックする必要があります。

次のコードは、メンバーディレクトリからユーザーを除外するのを許可します。それらは、友だちとなっている他のユーザーの友だちリストにまだ表示されます。

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;

}

出典

そしてBP forunsでは:

Buddypress活動にadmin活動を隠すには?

このコードをbp-custom.phpに入力すると、サイト管理者のアクティビティは記録されず、[Who is Online]/[最近アクティブなメンバー]ウィジェットにも表示されません。

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
}

出典

私はあなたが両方のフィルタをマージして管理者を非表示にしてすべてのことができると思います:)

_ update _

これらのハックは1.6 /で動作していないため - このトピック それはBuddyPressの古い管理バーを使って動作するかもしれないことを示唆しています。そうですか?

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

これを行う方法を見つけました。そのbuddypress忍者と管理バーを元に戻すのコンボ。忍者プラグインは動作しますが、現在、新しい管理バーで切り替えることはできません。つまり、古いバーを一時的にアクティブにしてステルスモードを切り替えてから、新しいバーを再びアクティブにします。

詳細はこちら:

0
ubernaut

私はこのきちんとした小さなコードをbuddydevに見つけました。もともと現在のユーザーを隠すために使用されていました。しかし、管理者を隠すように簡単に変更されます。

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

ソース

0
user1973842

Buddypress 1.9.2から管理者ユーザを削除しました

これが私のやり方です。

私の管理者ユーザーID 2

ファイルの場所:buddypress\bp-members\bp-members-template.php

292行目を探します'exclude' => false,

そしてfalseをur user idに変更します私の場合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