Erstellen Sie automatisch einen neuen Benutzer über die functions.php in WordPress

Lesezeit: 6 Minuten

Benutzeravatar von Jlil
Jlil

Ich muss einen neuen Benutzer mit Administratorrolle über Code hinzufügen und habe diesen Code gefunden:

add_action('init', 'add_user');
function add_user() {
    $username="username123";
    $password = 'pasword123';
    $email="[email protected]";

    // Create the new user
    $user_id = wp_create_user( $username, $password, $email );

    // Get current user object
    $user = get_user_by( 'id', $user_id );

    // Remove role
    $user->remove_role( 'subscriber' );

    // Add role
    $user->add_role( 'administrator' );
}

hier

Aber als ich es hinzugefügt habe functions.phpich habe diesen Fehler:

 Fatal error: Call to a member function remove_role() 
 on a non-object in ..../functions.php on line ...

Ich habe auch diesen Code ausprobiert:

 function fb_wp_insert_user() {
$user_data = array(
'ID' => '',
'user_pass' => wp_generate_password(),
'user_login' => 'dummy',
'user_nicename' => 'Dummy',
'user_url' => '',
'user_email' => '[email protected]',
'display_name' => 'Dummy',
'nickname' => 'dummy',
'first_name' => 'Dummy',
'user_registered' => '2010-05-15 05:55:55',
'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'fb_wp_insert_user' );

Ich habe die Standardrolle in geändert adminstrator aber als ich die Benutzer durchsuchte, fand ich diesen Benutzer ohne Rolle.

Der Benutzer-Avatar des Alphas
Das Alpha

Das ist dein Fehler

Schwerwiegender Fehler: Aufruf einer Member-Funktion remove_role() für ein Nicht-Objekt in …./functions.php online …

Es ist wegen $user->remove_role( 'subscriber' ); Code und es bedeutet, dass, wenn Sie den folgenden Code verwenden, um den neuen Benutzer abzurufen

$user = get_user_by( 'id', $user_id );

Es gibt kein a zurück WP_Benutzer Objekt. Wenn Sie also eine Methode für ein Nicht-Objekt aufrufen, wird dieser Fehler angezeigt, und es könnte daran liegen, dass Sie kein erhalten haben ID wenn du benutzt hast

$user_id = wp_create_user( $username, $password, $email );

Es ist möglich, dass Sie einen Benutzer nicht erfolgreich erstellt haben und in diesem Fall könnte der Rückgabewert ein sein object entsprechend Codex

Bei Erfolg gibt diese Funktion die Benutzer-ID des erstellten Benutzers zurück. Im Fehlerfall (Benutzername oder E-Mail existiert bereits) gibt die Funktion ein Fehlerobjekt mit diesen möglichen Werten und Meldungen zurück;

empty_user_login, Es kann kein Benutzer mit einem leeren Anmeldenamen erstellt werden.

vorhandener_Benutzer_Login, Dieser Benutzername ist bereits registriert.

existing_user_email, Diese E-Mail-Adresse ist bereits registriert.

SO, wenn Sie einen Benutzer erstellen, überprüfen Sie zuerst, ob der Benutzer existiert oder nicht gefällt

add_action('init', 'add_my_user');
function add_my_user() {
    $username="username123";
    $email="[email protected]";
    $password = 'pasword123';

    $user_id = username_exists( $username );
    if ( !$user_id && email_exists($email) == false ) {
        $user_id = wp_create_user( $username, $password, $email );
        if( !is_wp_error($user_id) ) {
            $user = get_user_by( 'id', $user_id );
            $user->set_role( 'administrator' );
        }
    }
}

Außerdem ist es nicht erforderlich, die Rolle zu entfernen und hinzuzufügen, set_role($rolle) entfernt die bisherigen Rollen des Benutzers und weist dem Benutzer die neue zu. Lesen Sie mehr über wp Benutzer erstellen und Benutzer erhalten durch an Codex. Überprüfen Sie auch die wp_generate_password() statt Klartext ein gesichertes Passwort zu verwenden.

Aktualisieren :

Nutzer hinzufügen ist eine WordPress-Funktion, also ändern Sie den Namen in etwas anderes wie, add_my_user.

  • @RCV Bitte geben Sie den vollständigen Code ein, ich verwende Ihren Code und sehe Folgendes: Kann add_user() (zuvor in ..\functions.php:909 deklariert) in ..\wp-admin\includes\user.php in Zeile 18 nicht erneut deklarieren. 909 ist: $username = ‘username123’; . vielleicht verstehe ich dich nicht richtig. Bitte geben Sie Ihren vollständigen Code ein.

    – Jlil

    7. November 2013 um 20:55 Uhr

  • Ooooops gleicher Fehler !! Schwerwiegender Fehler: Kann add_user() (zuvor in ..\functions.php:909 deklariert) in ..\wp-admin\includes\user.php in Zeile 18 nicht neu deklarieren, 909 ist $username = ‘username123’;

    – Jlil

    7. November 2013 um 21:08 Uhr

  • Überprüfen Sie das Update, Geändert add_user zu add_my_user @ techno.

    – Das Alpha

    7. November 2013 um 21:11 Uhr


  • Wenn Sie dies nicht in einem Plugin verwenden, vergessen Sie nicht, Folgendes zu verwenden: require_once “wp-load.php”;

    – Paulo A. Costa

    7. Juli 2019 um 2:46 Uhr

Benutzeravatar von Pat J
Pat J

Prüfen Sie, ob dies der Fall ist wp_create_user() eigentlich erstellt der Nutzer:

add_action('init', 'add_user');
function add_user() {
    $username="username123";
    $password = 'pasword123';
    $email="[email protected]";

    $user = get_user_by( 'email', $email );
    if( ! $user ) {

        // Create the new user
        $user_id = wp_create_user( $username, $password, $email );
        if( is_wp_error( $user_id ) ) {
            // examine the error message
            echo( "Error: " . $user_id->get_error_message() );
            exit;
        }

        // Get current user object
        $user = get_user_by( 'id', $user_id );
    }

    // Remove role
    $user->remove_role( 'subscriber' );

    // Add role
    $user->add_role( 'administrator' );
}

Bearbeitet: Gemäß den Kommentaren unten scheint der Benutzer bereits erstellt worden zu sein. Ich habe den Code aktualisiert, um das zu überprüfen. (Im Wesentlichen wird der Benutzer jetzt erstellt, wenn er noch nicht existiert.)

Verweise

  • Error: Syntax Error, unerwartet ‘;’ in ..\functions.php auf Zeile 917 . Zeile 917 lautet: echo( “Error: ” . $user_id->get_error_message();

    – Jlil

    7. November 2013 um 20:03 Uhr

  • Ups, Tippfehler korrigiert.

    – Pat J

    7. November 2013 um 20:04 Uhr

  • Schwerwiegender Fehler: Kann add_user() (zuvor in ..\functions.php:909 deklariert) in ..\wp-admin\includes\user.php auf Zeile 18 nicht neu deklarieren 909 ist: $username = ‘username123’;

    – Jlil

    7. November 2013 um 20:08 Uhr

  • @AmalMurali Häh? Wenn wp_create_user() gibt a zurück WP_Error Objekt, überprüfe ich, um zu sehen, was der Fehler ist. Andernfalls, $user sollte ein sein WP_User Gegenstand, es sei denn, aus irgendeinem Grund wp_create_user() ist zurückgekommen weder eine ganzzahlige ID noch a WP_Error Objekt.

    – Pat J

    7. November 2013 um 20:16 Uhr

  • +1 @AmalMurali, für nette Einstellung, weitermachen 🙂

    – Das Alpha

    7. November 2013 um 20:28 Uhr

$userData = array(
            'user_login' => 'username',
            'first_name' => 'First',
            'last_name' => 'Last',
            'user_pass' => 'password',
            'user_email' => '[email protected]',
            'user_url' => '',
            'role' => 'administrator'
        );
wp_insert_user( $userData );

  • Fügen Sie diesen Code in die Datei function.php ein. Wenn Sie Hilfe benötigen, scheuen Sie sich bitte nicht, rufen Sie an.

    – Jakir Hossain

    4. Februar 2015 um 8:31 Uhr

Benutzeravatar von Soufiane
Soufiane

function kechweb_create_admin_account(){
  $user="Username"; <br />
  $pass="Password";<br />
  $email="[email protected]";<br />
  //if a username with the email ID does not exist, create a new user account<br />
  if ( !username_exists( $user ) && !email_exists( $email ) ) {<br />
  $user_id = wp_create_user( $user, $pass, $email ); <br />
  $user = new WP_User( $user_id ); <br />
  //Set the new user as a Admin <br />
  $user->set_role( 'administrator' ); <br />
  } } <br />
  add_action('init','kechweb_create_admin_account');

1394700cookie-checkErstellen Sie automatisch einen neuen Benutzer über die functions.php in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy