Publicar programáticamente una entrada (tipo de contenido personalizado) con campos personalizados

25 dic 2012, 09:43:22
Vistas: 28.5K
Votos: 23

Tengo un tipo de contenido personalizado 'Participant' con muchos campos personalizados. También tengo un formulario con campos de entrada correspondientes para que el usuario los complete. Cuando envía el formulario, quiero que se genere una nueva publicación con cada campo personalizado conteniendo el valor elegido por el usuario.

¿Es posible hacerlo y si es así, cómo?

0
Todas las respuestas a la pregunta 3
5
45

Utiliza wp_insert_post() y add_post_meta(), así:

// inserta el post y establece la categoría
$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',   // si lo prefieres
    'ping_status' => 'closed',      // si lo prefieres
));

if ($post_id) {
    // inserta metadatos del post
    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);
}
25 dic 2012 10:32:01
Comentarios

Funciona perfectamente incluso en WordPress 4.4.2 :) !

jave.web jave.web
11 abr 2016 09:12:50

actualmente, puedes agregar campos meta fácilmente usando la clave meta_input en wp_insert_post: 'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]

Andreas Andreas
21 may 2019 14:08:37

Buen punto @Andreas, te sugiero que agregues eso como una nueva respuesta y dejes que comience a recibir votos. Debería ser la respuesta correcta ahora.

webaware webaware
22 may 2019 01:48:17

Gracias @webaware :)

Andreas Andreas
23 may 2019 02:58:14

¡Funciona de maravilla incluso en WordPress 5.1 :) !

I am the Most Stupid Person I am the Most Stupid Person
6 jun 2019 07:43:36
0
14

Además de la excelente respuesta de @webaware mencionada anteriormente, esto se puede manejar desde WordPress 4.4.0 completamente mediante la llamada wp_insert_post:

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

    // un simple array de clave/valor
    'meta_input' => array(
        'your_custom_key1' => 'your_custom_value1',
        'your_custom_key2' => 'your_custom_value2'
        // y así sucesivamente ;)
    )
));

if ($post_id) {
    // funcionó :)
}

23 may 2019 03:04:33
1

Esto se puede lograr bastante fácilmente utilizando el plugin Gravity Forms. Puedes construir un formulario que rellene un Tipo de Entrada Personalizado (Custom Post Type) en el backend. Esta entrada se puede configurar para que aparezca como borrador o como publicada. No hay problema para añadir campos personalizados. En mi caso, lo usé para recopilar testimonios de clientes.

26 dic 2012 20:08:59
Comentarios

Me gusta esta solución, especialmente si se la estás entregando a un cliente que quiere gestionar el formulario por sí mismo.

webaware webaware
27 dic 2012 01:42:46