Wie erhält man user_meta-Wert für neue registrierte Benutzer?

Wir haben den Registrierungsprozess angepasst. Benutzer registrieren sich selbst. Wenn sich ein Benutzer registriert, werden einige Metawerte basierend auf der $user_id aktualisiert. Jetzt müssen wir eine E-Mail senden.

Wir haben den Action-Hook namens user_register , um die E-Mail zu senden. Wenn sich ein Benutzer registriert, wird eine E-Mail an diesen Benutzer gesendet. Das Problem ist, dass der Metawert nicht gesendet wird, selbst wenn ich dem Hook eine Priorität von 100 gegeben habe.

Wie kann ich den Meta-Wert dieses bestimmten Benutzers mit user_register hook user_register , damit ich sie in einer E-Mail senden kann?

Hier ist der Registrierungscode:

 add_action( 'user_register', 'sendMailM', 99999, 1 ); function sendMailM( $user_id ) { $title = "Title"; $from = "noreply@admin.no"; global $wpdb, $password; $user = new WP_User( $user_id ); $user_login = stripslashes( $user->user_login ); $user_email = stripslashes( $user->user_email ); $companyCreatedUserP4 = get_user_meta( $user_id, 'companyId', true ); if( ! empty( $companyCreatedUserP4 ) ) { $current_companyP4 = new WP_User( $companyCreatedUserP4 ); $companyEmailP4 = $current_companyP4->user_email; $messageAdmin = 'New User ' . $user_login . ' is registered on your site under ' . $current_companyP4->user_firstname . ' company.'; $messageCompanyP4 = 'A new user with a user name: ' . $user_login . ' was registered under your company.'; } else { $messageAdmin = 'New User ' . $user_login . ' is registered on your site.'; } $message = "

You are now registered . Your user name and password are included in this email.

"; $message .= "

" . sprintf( __( 'Username: %s' ), $user_login ) . "\r\n\r\n

"; $message .= "

" . sprintf( __( 'Password: %s' ), $passwor d) . "\r\n

"; $headers = 'From: ' . $title . '\r\nReply-To: " . $from; add_filter( 'wp_mail_content_type', create_function( '', 'return "text/html";' ) ); wp_mail( get_option( 'admin_email' ), 'New User Registration ', $messageAdmin, $headers ); /*admin*/ if( ! empty( $companyEmailP4 ) ) wp_mail( $companyEmailP4, 'New User Registration ', $messageCompanyP4, $headers ); /*user*/ }

Dies ist der Code zum Erstellen eines neuen Benutzers und Aktualisieren des Metawerts:

 $user = wp_insert_user( $userdata ); update_user_meta( $user, 'companyId', 350 ); 

Solutions Collecting From Web of "Wie erhält man user_meta-Wert für neue registrierte Benutzer?"

Read de Codex Eintrag für user_register Aktion , es sagt:

Wenn diese Aktion ausgetriggers wird, wurden nicht alle Benutzermetadaten in der database gespeichert.

Beachte Folgendes:

 $user = wp_insert_user( $userdata ); update_user_meta( $user, 'companyId', 350 ); 

Folge dieser Reihenfolge: user_register user -> run user_register action hinzu -> user_register deine update user meta function. Daher ist Ihr benutzerdefiniertes Benutzer-Meta in der Aktion user_register nicht verfügbar.

Anstatt die Benutzermetadaten nach wp_insert_user() aktualisieren, können Sie dies innerhalb der user_register Aktion tun:

 add_action( 'user_register', 'sendMailM' ); function sendMailM( $user_id ) { // Note: $_POST data is available here, // just in case you need to update user meta based on form input, // for example, $_POST['companyId'] update_user_meta( $user_id, 'companyId', 350 ); $title = "Title"; $from = "noreply@admin.no"; global $wpdb, $password; $user = new WP_User( $user_id ); $user_login = stripslashes( $user->user_login ); $user_email = stripslashes( $user->user_email ); // You can now access to previously updated user meta // Or get the companyId directly from $_POST input if needed $companyCreatedUserP4 = get_user_meta( $user_id, 'companyId', true ); if( ! empty( $companyCreatedUserP4 ) ) { $current_companyP4 = new WP_User( $companyCreatedUserP4 ); $companyEmailP4 = $current_companyP4->user_email; $messageAdmin = 'New User ' . $user_login . ' is registered on your site under ' . $current_companyP4->user_firstname . ' company.'; $messageCompanyP4 = 'A new user with a user name: ' . $user_login . ' was registered under your company.'; } else { $messageAdmin = 'New User ' . $user_login . ' is registered on your site.'; } $message = "

You are now registered . Your user name and password are included in this email.

"; $message .= "

" . sprintf( __( 'Username: %s' ), $user_login ) . "\r\n\r\n

"; $message .= "

" . sprintf( __( 'Password: %s' ), $passwor d) . "\r\n

"; $headers = 'From: ' . $title . '< ' . $from . ">\r\nReply-To: " . $from; add_filter( 'wp_mail_content_type', create_function( '', 'return "text/html";' ) ); wp_mail( get_option( 'admin_email' ), 'New User Registration ', $messageAdmin, $headers ); /*admin*/ if( ! empty( $companyEmailP4 ) ) wp_mail( $companyEmailP4, 'New User Registration ', $messageCompanyP4, $headers ); /*user*/ }