Wie erstelle ich Benutzerkonten aus benutzerdefinierten Posts mit E-Mail-Adressen?

Ich habe 10.000 benutzerdefinierte Beiträge zu Marinas. Jede Marina verfügt über Kontaktinformationen in benutzerdefinierten Feldern, die eine E-Mail-Adresse und einen Kontaktnamen enthalten. Ich möchte jeder dieser Marinas die Möglichkeit geben, sich einzuloggen und ihre Daten zu bearbeiten.

Wie erstelle ich programmgesteuert oder per CSV-Import Benutzerkonten für jede Marina?

Solutions Collecting From Web of "Wie erstelle ich Benutzerkonten aus benutzerdefinierten Posts mit E-Mail-Adressen?"

Hier ist ein Beispiel, das Sie in ein Skript zB import.php innerhalb der Wurzel Ihrer WordPress-Installation import.php . Wir durchlaufen alle marina Posts (oder was auch immer Ihr CPT ist) in Chargen von 50 (10.000 Posts sind viel zu viel, um sie auf einmal zu laden), ziehen die Kontaktdaten (Sie müssen sicherstellen, dass die Feldnamen korrekt sind), dann versuchen Sie es um einen Benutzer zu erstellen.

 < ?php require './wp-load.php'; set_time_limit( 0 ); $query = new WP_Query; $paged = 1; while ( true ) { $query->query([ 'posts_per_page' => 50, 'post_type' => 'marina', 'paged' => $paged, ]); if ( ! $query->have_posts() ) { break; } foreach ( $query->posts as $post ) { // Assumed meta fields, change to fit your needs $name = trim( get_post_meta( $post->ID, 'name', true ) ); $email = trim( get_post_meta( $post->ID, 'email', true ) ); // Generate a unique username $login = $_login = sanitize_key( $name ); $i = 2; while ( ! $login || username_exists( $login ) ) { $login = "$_login-" . ++$i; } // Name parts $name_parts = preg_split( '/ +/', $name ); // Attempt to create the user $user_id = wp_insert_user([ 'user_pass' => wp_generate_password(), 'user_login' => $login, 'user_email' => $email, 'display_name' => $name, 'first_name' => array_shift( $name_parts ), 'last_name' => implode( ' ', $name_parts ), 'role' => 'subscriber', ]); if ( ! is_wp_error( $user_id ) ) { // do something with user ID? } else { // something went wrong } // Free up memory clean_post_cache( $post ); } $paged++; } 

Haftungsausschluss: Dieser Code dient nur zu Demonstrationszwecken und ich übernehme keine Haftung für alles, was schief gehen könnte. Ich schlage vor, Sie untersuchen es sorgfältig, stellen Ihnen Fragen, die Sie vielleicht haben, und wenn Sie sicher sind, dass Sie es ausführen können, sichern Sie es zuerst!