wp_insert_post() o similar para tipos de contenido personalizados

18 jul 2013, 14:09:06
Vistas: 80.5K
Votos: 8

Necesito insertar objetos de tipo de contenido personalizado desde el código. No he podido agregarlos usando el método predeterminado

$id = wp_insert_post(array('post_title'=>'aleatorio', 'post_type'=>'custom_post'));

crea una entrada regular en su lugar.

3
Comentarios

¿Has registrado un custom post type llamado custom_post antes de usar esta llamada?

Rohit Pande Rohit Pande
18 jul 2013 14:32:44

sí, está registrado

rashid rashid
18 jul 2013 14:56:08

no importa, está funcionando, había un pequeño error en el archivo, este fragmento exacto es correcto. ¡solo reemplaza 'custom_post' con el tipo de publicación que elijas!

rashid rashid
18 jul 2013 15:02:55
Todas las respuestas a la pregunta 5
2
20

Se puede hacer utilizando el siguiente código:

Para crear una nueva entrada de un tipo personalizado

$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
));

Después de insertar la entrada, la función anterior devolverá un ID de entrada. Ahora, si deseas agregar cualquier información de metadatos relacionada con esta entrada, puedes usar el siguiente fragmento de código.

if ($post_id) {
   // insertar metadatos de la entrada
   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);
}
24 jun 2014 09:03:13
Comentarios

El parámetro 'meta_input' se puede usar en el array de 'wp_insert_post', para agregar campos meta, en lugar de usar 'add_post_meta' después.

AncientRo AncientRo
10 mar 2019 16:14:59

Gracias por el post. @AncientRow, ¿podrías proporcionar un ejemplo que incluya meta_input?

Pegues Pegues
22 abr 2020 20:39:22
0
18

Del Codex:

wp_insert_post() completará una lista predeterminada de estos, pero el usuario debe proporcionar el título y el contenido, de lo contrario, la escritura en la base de datos fallará.

$id = wp_insert_post(array(
  'post_title'=>'aleatorio', 
  'post_type'=>'custom_post', 
  'post_content'=>'texto de demostración'
));
18 jul 2013 15:21:05
0

Este ejemplo me funcionó usando meta_input

$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',
   'ping_status' => 'closed',
   'meta_input' => array(
      '_your_custom_1' => $custom_1,
      '_your_custom_2' => $custom_2,
      '_your_custom_3' => $custom_3,
    ),
));
17 oct 2021 01:15:09
1

Descubrí que usando isset() me permitió utilizar wp_insert_post() en tipos de entradas personalizados:

if ( !isset( $id ) ) { 
    $id = wp_insert_post( $new, true ); 
}
10 mar 2015 22:00:54
Comentarios

Para formatear correctamente el código en tu respuesta (o pregunta), resáltalo y haz clic en {} sobre el cuadro de edición.

Gabriel Gabriel
10 mar 2015 22:38:51
0

Tuve el mismo problema. Intenté todas las soluciones proporcionadas en la mayoría de los foros. Pero la solución real que funcionó para mí fue que el tipo de publicación (post_type) tenía un problema de longitud. La longitud de post_type está limitada a 20 caracteres. Así que cualquiera que tenga un problema similar, pruebe esto si nada más ha funcionado.

15 jun 2021 17:23:03