web-dev-qa-db-fra.com

Création d'un type d'article personnalisé lors de l'inscription

J'ai du mal à trouver la solution la plus simple/rapide à ce problème:

J'ai un plugin qui crée des entreprises, mais stocke toutes les informations de l'entreprise en tant qu'utilisateur, de sorte que toutes les informations figurent dans le profil de l'utilisateur. J'ai un autre plugin (Geo mon WP) qui ne recherche que post/pages/cpt, mais pas les utilisateurs (bon, ils le font un peu, mais en fonction de l'adresse et non des autres métadonnées utilisateur, par exemple, ce que je veux).

Je pensais donc que s’il était possible que, lorsque l’utilisateur crée un profil, un cpt soit créé et enregistre une partie des données, par exemple une adresse, la catégorie y est peut-être également stockée, ainsi que des métadonnées. Cela semble redondant, mais alors mon plugin de géolocalisation fonctionne bien sans tas de modifications personnalisées (si possible).

Maintenant, je suis un peu fatigué s’il est possible de créer un cpt automatiquement et d’être mis à jour également lors de l’enregistrement de l’utilisateur.

Ou toute autre solution?

Btw: J'ai un peu besoin de la Geo mon wp comme j'ai d'autres cpt que je veux utiliser dans le formulaire de recherche.

1
tjej2016

Il y a l'action hook user_register qui est appelée immédiatement après l'ajout d'un utilisateur à la base de données. L'identifiant de l'utilisateur est passé au crochet en tant qu'argument.

Vous pouvez utiliser wp_insert_post pour insérer une nouvelle publication dans cette action. Vous devez simplement obtenir les informations pertinentes de l'utilisateur et les ajouter au message. Vous pouvez ajouter des champs personnalisés à la publication que vous créez en référençant l'ID de publication renvoyé par wp_insert_post.

Voici un exemple de la manière dont vous ajouteriez un message de type personnalisé lors de l'enregistrement de l'utilisateur. Vous devrez évidemment le modifier pour l'adapter à vos besoins, mais cela devrait vous donner une idée de ce que vous devez faire.

/*
 * Create new custom post type post on new user registration
 */
add_action( 'user_register', 'wpse_216921_company_cpt', 10, 1 );
function wpse_216921_company_cpt( $user_id )
{
    // Get user info
    $user_info = get_userdata( $user_id );

    // Create a new post
    $user_post = array(
        'post_title'   => $user_info->nickname;
        'post_content' => $user_info->description,
        'post_type'    => 'your_company_custom_post_type', // <- change to your cpt
    );
    // Insert the post into the database
    $post_id = wp_insert_post( $user_post );

    // Add custom company info as custom fields
    add_post_meta( $post_id, 'company_id', $user_info->ID );
    add_post_meta( $post_id, 'company_email', $user_info->user_email );
}
3
Cai