Publique programaticamente uma postagem (tipo de postagem personalizada) com campos personalizados


17

Eu tenho um tipo de postagem personalizado 'Participante' com muitos campos personalizados. Também tenho um formulário com os campos de entrada correspondentes para o usuário preencher. Quando ele envia o formulário, desejo que uma nova postagem seja gerada com cada campo personalizado contendo o valor escolhido pelo usuário.

É possível fazer e, em caso afirmativo, como?

Respostas:


29

Use wp_insert_post () e add_post_meta () , assim:

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

Funciona como charme, mesmo no WordPress 4.4.2 :)!
Jave.web 11/04

hoje em dia, você pode simplesmente adicionar meta-arquivos através da chave meta_input em wp_insert_post:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Andreas

Bom argumento @Andreas, sugiro que você adicione isso como uma nova resposta e que comece a receber votos. Deve ser a resposta agora.
Webaware

Thx @webaware :)
Andreas

Funciona como charme, mesmo no WordPress 5.1 :)!
Eu sou a pessoa mais estúpida

6

Além da ótima resposta do @webaware acima, isso pode ser tratado desde o wordpress 4.4.0, tudo através da chamada 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

Isso pode ser conseguido facilmente usando o plug-in Gravity Forms . Você pode criar um formulário que preencha um Tipo de postagem personalizado no back-end. Esta postagem pode ser configurada para aparecer como rascunho ou publicada. Não há problema em adicionar campos personalizados. No meu caso, usei-o para reunir depoimentos de clientes.


Gosto dessa solução, especialmente se você a estiver entregando a um cliente que queira gerenciar o formulário por conta própria.
Webaware
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.