Програмно опублікувати публікацію (спеціальний тип публікації) із спеціальними полями


17

У мене є власна публікація типу "Учасник" з багатьма спеціальними полями. У мене також є форма з відповідними полями введення, яку користувач повинен заповнити. Коли він надсилає форму, я хочу створити нову публікацію з кожним користувацьким полем, що містить значення, вибране користувачем.

Чи можна це зробити і якщо так, то як?

Відповіді:


29

Використовуйте wp_insert_post () та add_post_meta () , наприклад:

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

Працює як шарм навіть у WordPress 4.4.2 :)!
jave.web

сьогодні ви можете просто додати мета-файли за допомогою ключа meta_input у wp_insert_post:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Андреас

Хороший момент @Andreas, я пропоную вам додати це як нову відповідь і дозволити йому почати набирати голоси. Це має бути відповідь зараз.
webaware

Thx @webaware :)
Андреас

Працює як шарм навіть у WordPress 5.1 :)!
Я

6

На додаток до чудової відповіді @webaware, описаної вище, це можна вирішити з wordpress 4.4.0 все через дзвінок 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

Цього можна досягти досить легко, використовуючи плагін Gravity Forms . Ви можете створити форму, яка заповнює тип користувальницької пошти в бекенді. Цю публікацію можна встановити як чернетку або як опубліковану. Немає проблем із додаванням спеціальних полів. У моєму випадку я використовував це для збору відгуків клієнтів.


Мені подобається це рішення, особливо якщо ви доставляєте його клієнту, який хоче керувати формою самостійно.
webaware
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.