Как скрыть администраторскую учетную запись в BuddyPress? (из соображений безопасности)

Я работал с WordPress в течение прошлых 3-4 лет, но я плохо знаком с BuddyPress.

Я хотел бы скрыть администраторскую учетную запись полностью от BuddyPress из соображений безопасности. Например, с обычным блогом WordPress у меня было бы две отдельных учетных записи (один с административными привилегиями, который остается скрытым, и другой только с ролью Редактора для опубликовывания всех статей). Тем путем администраторская учетная запись была бы скрыта от общественности, и любой пытающийся ворваться должен будет предположить и пароль И имя пользователя. В BuddyPress это не настолько легко, так как администраторская учетная запись очень выставляется общественности.

Одна вещь, которую мне удалось сделать, исключают администраторский профиль из членского каталога путем редактирования/bp-themes/bp-default/members/member_loop.php файл. (Да я знаю, что не должен редактировать тему по умолчанию и делать дочернюю тему или одинокую тему вместо этого! Я доберусь до него, после того как я разрешил это.) Я добавил &exclude=1 параметр (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
03.09.2012, 21:06
5 ответов

Я нашел это:

Исключите Пользователей из членского каталога на основанной на 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?

Поместите этот код в bp-custom.php, и Ни одно из действия администратора сайта не будет зарегистрировано, ни будете Вы появляться в, Кто / Онлайн недавно виджет активных членов.

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
}

Источник

Я думаю, что можно объединить оба фильтра и скрыть Администратора Раз и навсегда :)

ОБНОВЛЕНИЕ

Поскольку эти взломы не работают в 1,6 этих темах, предполагают, что они могут работать при помощи старой администраторской панели в BuddyPress. Это так?

4
19.02.2020, 22:06
  • 1
    Спасибо за ответ, но фрагмент кода для сокрытия администраторского действия не работает. Я искал его, и кажется, что этот код раньше работал над более старыми выпусками BuddyPress, но не на текущем больше. –  Paul T. 16.08.2012, 05:13
  • 2
    Действительно! Я попробовал здесь :( –  Diana 16.08.2012, 06:01
  • 3
    Существует плагин, названный "Скрытый режим для администратора сайта Buddypress" buddydev.com/buddypress / …, что я нашел, перейдя по ссылке, которую Вы предоставили свой ответ. Я надеялся постараться не устанавливать еще один плагин, но если никакое другое решение не найдено, я предполагаю, что это должно будет сделать. –  Paul T. 17.08.2012, 01:16
  • 4
    я попробовал этот плагин также, но также и не работаю, :( –  Diana 17.08.2012, 07:56
  • 5
    Спасибо за головы, Вы сэкономили мне некоторое время там. Но это также означает, что я все еще ищу другое решение этого :( –  Paul T. 17.08.2012, 15:57

Узнанный, как сделать это. Это - комбинация buddypress ниндзя и возвращения администраторской панели. Работы плагина ниндзя, но не могут быть переключены в новой администраторской панели в настоящее время. Таким образом, Вы временно активируетесь, старая панель переключаются, скрытый режим затем повторно активируют новую панель.

Более подробная информация:

0
19.02.2020, 22:06
  • 1
    Даже после возвращения к старой администраторской панели BuddyPress и скрытому режиму включения для плагина, ничего не произошло. Администраторское действие не скрыто. :( –  Paul T. 03.09.2012, 20:10
// 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
19.02.2020, 22:06

Просто удаленный администраторский пользователь из buddypress 1.9.2

вот то, как я сделал это:

мой администраторский идентификатор пользователя 2

в файле: buddypress\bp-members\bp-members-template.php

ищите строку 292 'exclude' => false,

и изменение false к Вашему идентификатору пользователя мой случай 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
19.02.2020, 22:06
<?php
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=join(',',bpdev_get_administrator_user_ids());//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 searching for friends list etc?, 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;

}

function bpdev_get_administrator_user_ids(){
    $users=array();
    $administrators= get_users( array( 'role' => 'administrator' ) );
   if(!empty($administrators)){
       foreach((array)$subscribers as $administrators)
           $users[]=$administrators->ID;

   }
   return $users;
}
?>
-1
19.02.2020, 22:06
  • 1
    , Что является тем блоком кода, для, что это сделает - отредактируйте свой Ответ и добавьте некоторое объяснение к Вашему Ответу. Ответ Только для кода является одним из худших. :( –  Mayeenul Islam 07.05.2014, 06:36

Теги

Похожие вопросы