it-swarm.com.de

Erstellen eines benutzerdefinierten Beitragstyps bei der Registrierung

Ich habe Mühe, die beste/schnell einfachste Lösung für dieses Problem zu finden:

Ich habe ein Plugin, das Unternehmen erstellt, aber alle Unternehmensinformationen als Benutzer speichert, sodass alle Informationen im Benutzerprofil enthalten sind. Ich habe ein anderes Plugin (Geo my WP), das nur nach Beiträgen/Seiten/CPTs sucht, aber nicht nach Benutzern.

Also dachte ich, wenn es eine Möglichkeit gäbe, dass beim Erstellen eines Profils durch den Benutzer ein Cpt erstellt und einige der Daten, z. B. die Adresse, gespeichert werden, wird möglicherweise auch die Kategorie dort gespeichert und Metadaten veröffentlicht. Scheint überflüssig, aber dann funktioniert mein Geolocation-Plugin auch ohne jede Menge benutzerdefinierter Änderungen (wenn möglich).

Jetzt bin ich ein bisschen müde, wenn es möglich ist, ein Cpt automatisch zu erstellen und bei der Benutzerregistrierung auch aktualisiert zu werden.

Oder irgendeine andere Lösung?

Btw: Ich brauche ein bisschen das Geo mein wp, da ich andere cpt's habe, die ich im Suchformular verwenden möchte.

1
tjej2016

Es gibt den Aktions-Hook user_register, der unmittelbar nach dem Hinzufügen eines Benutzers zur Datenbank aufgerufen wird. Die Benutzer-ID wird als Argument an den Hook übergeben.

Sie können wp_insert_post verwenden, um einen neuen Beitrag in diese Aktion einzufügen. Sie müssen nur die relevanten Informationen vom Benutzer abrufen und dem Beitrag hinzufügen. Sie können dem von Ihnen erstellten Beitrag benutzerdefinierte Felder hinzufügen, indem Sie auf die Beitrags-ID verweisen, die von wp_insert_post zurückgegeben wird.

Dies ist ein Beispiel für das Hinzufügen eines benutzerdefinierten Beitragstyps bei der Benutzerregistrierung. Sie müssen ihn natürlich an Ihre Anforderungen anpassen, erhalten jedoch eine Vorstellung davon, was zu tun ist.

/*
 * 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