web-dev-qa-db-fra.com

Créer des publications sur l'enregistrement de l'utilisateur

Comment puis-je créer, disons 3 messages une fois que l'utilisateur a terminé l'enregistrement?

Le résultat idéal serait de créer 3 publications en utilisant l’utilisateur en tant qu’auteur et avec certaines valeurs prédéfinies. (titre et slug du post)

Le titre de l'article et le slug seront créés à partir des informations que l'utilisateur indiquera sur le formulaire d'inscription.

Un exemple:

Les utilisateurs s’inscrivent et indiquent leur nom, leur nom, leur adresse électronique (tous les champs sont obligatoires). Trois publications sont créées et l’utilisateur en est l’auteur. Chaque article aura dans le titre et le slug info du formulaire d’inscription

  • 1- Jon Doe Bio | jon-doe-bio
  • 2- Portefeuille Jon Doe | Jon-doe-portfolio
  • 3- Jon Doe Contact | jon-doe-contact

* Dans l'exemple ci-dessus, il semble inutile d'avoir la possibilité de modifier le slug, mais il y aura des posts avec des mots tels que: in, is, at, and, ils seront supprimés autrement. Notez également que les "valeurs prédéfinies seraient: Bio, Portfolio et Contact.

Il serait proche des messages de "bienvenue" créés par wordpress après installation.

Une idée de comment faire?

Je sais que je dois utiliser wp_insert_post( $my_post ); et probablement add_action('user_register', 'some_function');, mais je ne sais pas comment créer 3 publications en une fois à l'aide de wp_insert_post( $my_post ); et comment la déclencher une fois que l'utilisateur a terminé le processus d'inscription.

Une idée comment accomplir ceci? Merci d'avance.

5
user983248

Vous avez déjà répondu à la question vous-même,

Créez une fonction qui créera les 3 posts ex:

function create_new_user_posts($user_id){
        if (!$user_id>0)
                return;
        //here we know the user has been created so to create 
        //3 posts we call wp_insert_post 3 times.
        // Create post object
        $my_bio_post = array(
             'post_title' => 'bio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $bio = wp_insert_post( $my_bio_post );
        $my_portfolio_post = array(
             'post_title' => 'portfolio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $portfolio = wp_insert_post( $my_portfolio_post );
        $my_contact_post = array(
             'post_title' => 'bio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $contact = wp_insert_post( $my_contact_post );

        //and if you want to store the post ids in 
        //the user meta then simply use update_user_meta
        update_user_meta($user_id,'_bio_post',$bio);
        update_user_meta($user_id,'_portfolio_post',$portfolio);
        update_user_meta($user_id,'_contact_post',$contact);
}

et vous accrochez cette fonction en utilisant user_register hook

add_action('user_register','create_new_user_posts');

Mise à jour Lorsque vous associez une fonction à user_register, celle-ci reçoit l'ID utilisateur afin que vous puissiez l'utiliser pour obtenir les informations souhaitées sur cet utilisateur, par exemple:

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

et maintenant $ user est un objet USER. Vous pouvez donc modifier le titre de l'article en donnant à l'utilisateur les informations sur l'utilisateur, par exemple:

'post_title' => $user->user_firstname . " ". $user->user_lastname . 'bio'
10
Bainternet