Programowo opublikuj post (niestandardowy typ postu) z niestandardowymi polami


17

Mam niestandardowy typ posta „Uczestnik” z wieloma niestandardowymi polami. Mam również formularz z odpowiednimi polami wejściowymi do wypełnienia przez użytkownika. Kiedy przesyła formularz, chcę wygenerować nowy post z każdym niestandardowym polem zawierającym wartość wybraną przez użytkownika.

Czy można to zrobić, a jeśli tak, to w jaki sposób?

Odpowiedzi:


29

Użyj wp_insert_post () i add_post_meta () , jak poniżej:

// 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);
}

Działa jak urok nawet w WordPress 4.4.2 :)!
jave.web

w dzisiejszych czasach możesz po prostu dodawać pliki meta za pomocą klucza meta_input w wp_insert_post:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Andreas

Dobra uwaga @Andreas, proponuję dodać to jako nową odpowiedź i pozwolić, aby zaczęła zdobywać głosy. To powinna być teraz odpowiedź.
webaware

Dzięki @webaware :)
Andreas

Działa jak urok nawet na WordPress 5.1 :)!
Jestem najbardziej głupią osobą

6

Oprócz świetnej odpowiedzi @webaware powyżej, można to załatwić , ponieważ wordpress 4.4.0 wszystko za pośrednictwem wywołania wp_insert_post :

$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

Można to dość łatwo osiągnąć za pomocą wtyczki Gravity Forms . Możesz zbudować formularz wypełniający niestandardowy typ postu w wewnętrznej bazie danych. Ten post można ustawić tak, aby pojawiał się jako wersja robocza lub jako opublikowana. Nie ma problemu z dodawaniem niestandardowych pól. W moim przypadku wykorzystałem go do zebrania opinii klientów.


Podoba mi się to rozwiązanie, zwłaszcza jeśli dostarczasz je klientowi, który chce samodzielnie zarządzać formularzem.
internetowa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.