Programmgesteuertes Veröffentlichen eines Posts (benutzerdefinierter Post-Typ) mit benutzerdefinierten Feldern


17

Ich habe einen benutzerdefinierten Beitragstyp "Teilnehmer" mit vielen benutzerdefinierten Feldern. Ich habe auch ein Formular mit entsprechenden Eingabefeldern, die der Benutzer ausfüllen kann. Wenn er das Formular absendet, möchte ich, dass mit jedem benutzerdefinierten Feld, das den vom Benutzer ausgewählten Wert enthält, ein neuer Beitrag erstellt wird.

Ist es möglich und wenn ja, wie?

Antworten:


29

Verwenden Sie wp_insert_post () und add_post_meta () wie folgt :

// insert the post and set the category
$post_id = wp_insert_post(array (
    'post_type' => 'your_post_type',
    'post_title' => $your_title,
    'post_content' => $your_content,
    'post_status' => 'publish',
    'comment_status' => 'closed',   // if you prefer
    'ping_status' => 'closed',      // if you prefer
));

if ($post_id) {
    // insert post meta
    add_post_meta($post_id, '_your_custom_1', $custom1);
    add_post_meta($post_id, '_your_custom_2', $custom2);
    add_post_meta($post_id, '_your_custom_3', $custom3);
}

Funktioniert auch unter WordPress 4.4.2 einwandfrei :)!
jave.web

Heutzutage können Sie einfach Metadateien über den meta_input-Schlüssel in wp_insert_post hinzufügen:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Andreas

Guter Punkt @Andreas, ich schlage vor, dass Sie das als neue Antwort hinzufügen und es anfangen lassen, Stimmen zu bekommen. Es sollte jetzt die Antwort sein.
webaware

Danke @webaware :)
Andreas

Funktioniert auch unter WordPress 5.1 einwandfrei :)!
Ich bin die dümmste Person

6

Zusätzlich zu der großartigen Antwort von @webaware oben, kann dies seit WordPress 4.4.0 über den Aufruf von wp_insert_post erledigt werden :

$post_id = wp_insert_post(array (
    'post_content' => $content,
    'post_title' => $title,
    'post_type' => 'your_custom_post_type',
    'post_status' => 'publish',

    // some simple key / value array
    'meta_input' => array(
        'your_custom_key1' => 'your_custom_value1',
        'your_custom_key2' => 'your_custom_value2'
        // and so on ;)
    )
));

if ($post_id) {
    // it worked :)
}

4

Dies kann mit dem Gravity Forms-Plugin ganz einfach erreicht werden . Sie können ein Formular erstellen, das einen benutzerdefinierten Beitragstyp im Backend ausfüllt. Dieser Beitrag kann als Entwurf oder als veröffentlicht angezeigt werden. Kein Problem, benutzerdefinierte Felder hinzuzufügen. In meinem Fall habe ich damit Kundenreferenzen gesammelt.


Diese Lösung gefällt mir besonders, wenn Sie sie an einen Kunden liefern, der das Formular selbst verwalten möchte.
webaware
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.