Erstellen Sie einen WordPress-Benutzer für die benutzerdefinierte Veröffentlichungsart

Wenn ich versuche, Benutzer zu erstellen, wenn der benutzerdefinierte Post veröffentlicht wird, habe ich Folgendes versucht, aber es funktioniert nicht.

function adduseronpostpublish( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status or 'publish' === $old_status or 'custompostype' !== get_post_type( $post ) ) return; function add_new_user_account(){ $username = 'test'; //username $password = 'test'; //password $email = "user@user.com"; //email if ( !username_exists( $username ) && !email_exists( $email ) ) { $user_id = wp_create_user( $username, $password, $email ); $user = new WP_User( $user_id ); $user->set_role( 'contributor' ); //either of 'administrator', 'subscriber', 'editor', 'author', 'contributor' } } add_action('init','add_new_user_account'); } } add_action( 'transition_post_status', 'adduseronpostpublish', 10, 3 ); 

Solutions Collecting From Web of "Erstellen Sie einen WordPress-Benutzer für die benutzerdefinierte Veröffentlichungsart"

Probieren Sie den folgenden Code aus:

 add_action( 'transition_post_status', 'wpse_206193_new_user_from_custom_post', 10, 3 ); function wpse_206193_new_user_from_custom_post( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status or 'publish' === $old_status or 'my_custom_post' !== get_post_type( $post ) ) return; $userdata = array( 'user_login' => 'user_name', 'user_email' => 'email@example.com', 'user_pass' => NULL, 'role' => 'contributor' ); if ( !username_exists( $userdata['user_login'] ) && !email_exists( $userdata['user_email'] ) ) { wp_insert_user($userdata); } } 

Sie müssen diesen wp_create_user nicht bei der wp_create_user oder eine separate function in der function verwenden.