Dodanie nowego administratora przez FTP – gotowy kod PHP

Jak dodać nowego administratora WordPress przez FTP – gotowy kod PHP

Czasami zdarza się, że musisz zmienić hasło administratora, ponieważ nikt go już nie pamięta, lub dodać nowego użytkownika z takimi uprawnieniami nie mogąc się zalogować do kokpitu WordPressa. Można to oczywiście zrobić zarówno z poziomu bazy danych, jak i za pomocą WP-CLI. Tylko co, jeśli sama myśl o modyfikacji bazy danych napawa Cię strachem, a polecenia WP-CLI są Ci obce lub w ogóle nie wiesz, co to jest?

Jeśli masz dostęp do katalogu WordPressa przez FTP, istnieje prostsze rozwiązanie. W tym artykule pokażę Ci, jak za pomocą pliku PHP:

  • zmienić hasło i adres e-mail dowolnego użytkownika (jeśli znasz jego login)
  • dodać nowego użytkownika i przypisać mu określoną rolę (najczęściej administratora)

Ważne!
To rozwiązanie należy stosować z najwyższą ostrożnością, zwłaszcza na stronach produkcyjnych, czyli działających i opublikowanych.

Kod PHP dodający nowego administratora w WordPress

<?php
require 'wp-load.php';

$new_user_login = 'uzytkownik';
$new_user_pass = 'NoweHaslo';
$new_user_mail = 'adresemail@example.com';

$user = get_user_by( 'login', $new_user_login );

if ( !empty( $user ) ) {
    wp_update_user( array(
        'ID' => $user->ID,
        'user_pass' => $new_user_pass,        
        'user_email' => $new_user_mail,
    ));
    echo 'Nowe hasło "'. $new_user_pass .'" oraz nowy adres e-mail "'. $new_user_mail .'" dla użytkownika "'. $new_user_login .'" zostały ustawione.';
} 
else {
    $user_id = wp_create_user( $new_user_login, $new_user_pass, $new_user_mail );
    $user = new WP_User( $user_id );
    echo 'Nowy użytkownik "'. $new_user_login .'" z hasłem "'. $new_user_pass .'" został utworzony.';
}

$user->add_role( 'administrator' );

unlink(__FILE__);
?>

Jak korzystać z tego rozwiązania

Skopiuj podany kod do nowego pliku tekstowego, wprowadź w nim ewentualne zmiany i zapisz go jako plik z rozszerzeniem .php, np. nowyadmin.php. Następnie prześlij pliku do głównego katalogu WordPressa za pomocą klienta FTP. Na koniec uruchom plik w przeglądarce. Zakładając, że Twoja strona ma adres „mojastrona.pl”, aby to zrobić wpisz w pasek adresu:

https://mojastrona.pl/nowyadmin.php

Jeśli nie wprowadzałeś/-aś żadnych zmian w kodzie, po uruchomieniu pliku i wykonaniu zawartych w nim instrukcji zostanie zmienione hasło oraz adres e-mail istniejącego użytkownika lub utworzone nowe konto o loginie „uzytkownik”. W obu przypadkach hasło zostanie zmienione na „NoweHaslo”, adres e-mail zostanie ustawiony na „adresemail@example.com”, a a użytkownikowi zostanie przypisana rola „administartor”. Po zakończeniu operacji w oknie przeglądarki pojawi się stosowna informacja, a plik zostanie automatycznie usunięty z katalogu.

Co zrobić w przypadku błędu

Jeśli wprowadziłeś/-aś zmiany w kodzie i po jego uruchomieniu pojawił się błąd, usuń plik ręcznie przez FTP. Następnie sprawdź, co mogło być tego przyczyną – często jest to drobiazg, np. brak średnika. Jeśli na co dzień nie programujesz, nie przejmuj się – to normalne i zdarza się nawet doświadczonym programistom.

Opis działania kodu

Poniżej znajdziesz wyjaśnienie poszczególnych fragmentów kodu, co pozwoli Ci na wprowadzenie ewentualnych zmian.

Załadowanie WordPressa

require 'wp-load.php';

Ten kod umożliwia korzystanie z funkcji WordPressa. Ponieważ skrypt działa niezależnie, potrzebuje dostępu do API WordPressa, aby wykonywać operacje na użytkownikach.

Zdefiniowanie danych użytkownika

$new_user_login = 'uzytkownik';
$new_user_pass = 'NoweHaslo';
$new_user_mail = 'adresemail@example.com';

W tym miejscu określamy login użytkownika, którego dane chcemy zmienić lub którego chcemy dodać nowe hasło oraz nowy adres e-mail. Jeśli chcesz je zmienić, edytuj odpowiednie wartości, ale pamiętaj, by nie usuwać cudzysłowów, w których są zapisane.

Sprawdzenie, czy użytkownik już istnieje

$user = get_user_by( 'login', $new_user_login );

Ten fragment sprawdza, czy w bazie danych znajduje się użytkownik o loginie podanym w zmiennej $new_user_login. Jeśli konto już istnieje, skrypt zaktualizuje jego dane, natomiast jeśli użytkownik nie zostanie znaleziony, zostanie utworzone nowe konto z podanymi wartościami.

Aktualizacja danych użytkownika

if ( !empty( $user ) ) {
    wp_update_user( array(
        'ID' => $user->ID,
        'user_pass' => $new_user_pass,        
        'user_email' => $new_user_mail,
    ));
    echo 'Nowe hasło "'. $new_user_pass .'" oraz nowy adres e-mail "'. $new_user_mail .'" dla użytkownika "'. $new_user_login .'" zostały ustawione.';
}

Jeśli użytkownik o podanym loginie istnieje, jego hasło oraz adres e-mail zostaną zaktualizowane. Po zakończeniu operacji w oknie przeglądarki pojawi się komunikat potwierdzający dokonanie zmian.

Tworzenie nowego użytkownika

else {
    $user_id = wp_create_user( $new_user_login, $new_user_pass, $new_user_mail );
    $user = new WP_User( $user_id );
    echo 'Nowy użytkownik "'. $new_user_login .'" z hasłem "'. $new_user_pass .'" został utworzony.';
}

Jeżeli użytkownik o podanym loginie nie istnieje, skrypt utworzy nowe konto z wcześniej zdefiniowanym hasłem i adresem e-mail. Po pomyślnym dodaniu użytkownika w oknie przeglądarki wyświetli się stosowna informacja.

Dodanie roli administratora (lub innej)

$user->add_role( 'administrator' );

Na tym etapie nowemu lub zaktualizowanemu użytkownikowi zostaje dodana rola Administratora, dając mu tym samym pełne uprawnienia w systemie WordPress. Rola „administrator” jest jedną z domyślnych, ale możesz także przypisać użytkownikowi inne role, takie jak:

  • editor – Redaktor (Editor)
  • author – Autor (Author)
  • contributor – Współpracownik (Contributor)
  • subscriber – Subskrybent (Subscriber)
  • shop_manager – Menedżer Sklepu (Shop Manager), jeśli korzystasz z WooCommerce

Możesz dodać więcej niż jedną rolę do użytkownika. Wystarczy wywołać metodę add_role() dla każdej z nich. Na przykład, aby przypisać rolę Autora i Menedżera Sklepu, użyj:

$user->add_role( 'author' );
$user->add_role( 'shop_manager' );

Co prawda WordPress pozwala na przypisanie wielu ról do jednego użytkownika, ale warto pamiętać, że niektóre z nich mogą się pokrywać. Na przykład rola „administrator” obejmuje już wszystkie uprawnienia roli „editor” i innych. Jeśli więc użytkownik ma przypisaną rolę administratora, nie ma potrzeby dodawania mu dodatkowych ról, ponieważ już posiada pełny dostęp do systemu.

Usunięcie pliku

unlink(__FILE__);

Na końcu skryptu wywoływana jest funkcja, która usuwa plik, w którym znajduje się kod. Jest to zabezpieczenie przed ponownym wykonaniem tego samego skryptu. Jeśli jednak w trakcie działania skryptu wystąpi błąd, na przykład spowodowany przypadkowym usunięciem średnika, funkcja unlink() może się nie wykonać, a plik pozostanie na serwerze. W takim przypadku należy usunąć go ręcznie.

Warto wiedzieć
W niektórych konfiguracjach PHP, zwłaszcza na serwerach współdzielonych lub z restrykcyjnymi ustawieniami bezpieczeństwa, funkcja unlink() może być wyłączona w pliku konfiguracyjnym php.ini. Ma to na celu zapobieganie przypadkowemu usunięciu plików. W takich sytuacjach usunięcie pliku może wymagać ręcznej interwencji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


Koszyk
Przewijanie do góry