Adding a new user from the front end

I have a front end form that creates a new post from users that are not required to login. However, I need to create a new user based on the information passed in the form. As it is right now I can successfully create a new user, but in the user admin in the backend there are no posts associated with this new user (thought the posts are successful themselves).

Side note, if I delete the user and click to delete all associated posts, it will delete the post they created. I just can’t figure out why it won’t show their posts in the user admin…

Read More

Code as follows in my custom template file:

$new_post = array(
'post_title'    =>   $title,
'post_content'  =>   $description,
'post_category' =>   array($_POST['cat']),  // Usable for custom taxonomies too
'tags_input'    =>   array($tags),
'post_author'    => $user_id,
'post_status'   =>   'publish',           // Choose: publish, preview, future, draft, etc.
'post_type' =>   'post'  //'post',page' or use a custom post type if you want to

);

// Insert a user

if ( ! is_user_logged_in() ) {
        // create an account
      $user_data = array(
            'ID' => '',
            'user_pass' => wp_generate_password(),
            'user_login' => $lastname,
            'display_name' => $lastname,
            'first_name' => $firstname,
            'last_name' => $lastname,
            'role' => get_option('default_role'), // Use default role or another role, e.g. 'editor'
            'user_email' => $email
        );
        $user_id = wp_insert_user( $user_data );
    }
else {
    $user_id = get_current_user_id();
}

Related posts

Leave a Reply

1 comment

  1. You just need to reorder your function. Create your user before you enter your post, then the 'post_author' => $user_id field will actually have a value.