WordPress wp_insert_post no inserta etiquetas

Estoy tratando de insertar una publicación con este código:

$my_post = array(
                'post_type'    => "essays",
                'post_title'    => 'TEST 3',
                //'post_content'  => $content,
                'post_status'   => 'draft',
                'post_author'   => 1,
                //'post_category' => $cat,
                'tags_input'    => 'TQM,tag',
        );

$post_id = wp_insert_post($my_post);

Todo funciona bien excepto las etiquetas, no inserta ninguna de ellas. ¿Alguna idea?

preguntado el 03 de mayo de 12 a las 16:05

¿Devuelve algún error? No estoy seguro, pero ¿podría ser que haya un problema con las etiquetas que no existen? -

No, intenté insertar etiquetas existentes y tampoco funciona.

5 Respuestas

Utilice el wp_set_object_terms() función:

http://codex.wordpress.org/Function_Reference/wp_set_object_terms

wp_set_object_terms($post_id , $arrayoftags, $name_of_tag_taxonomy, false);

Buena suerte

contestado el 21 de mayo de 17 a las 18:05

Tu tipo de publicación es essays. Los tipos de publicaciones personalizadas no admiten etiquetas de forma predeterminada. Tendrás que agregar un tags taxonomía para ellos.

http://codex.wordpress.org/Taxonomies

http://codex.wordpress.org/Function_Reference/register_taxonomy

contestado el 03 de mayo de 12 a las 16:05

No estoy muy seguro de eso... No se menciona en codex.wordpress.org/Function_Reference/wp_insert_post de todos modos. Tengo curiosidad por saber si funcionará o no para el TS. dennis hunink

¡Bonita! Simplemente lo pasé por alto. Deberias hacer eso. - dennis hunink

Tengo la taxonomía de etiquetas registrada. También puedo agregar etiquetas manualmente a través de wp-admin, pero en el código no funciona... - yedidel

Para insertar la publicación con etiquetas y categorías, haga esto

$pid=wp_insert_post($new_post);
wp_set_post_terms( $pid, $arrayoftags);
wp_set_post_categories( $pid, $arrayofcategories );

entonces $pid es la identificación de la publicación, básicamente, primero inserta la publicación sin etiquetas o categorías y la función devuelve la identificación de la publicación que luego puede usar para insertar las etiquetas y categorías, cada una con su función respectiva, si observa el código fuente de wp_insert_post notará que la función funciona de manera diferente para los tipos de publicaciones personalizadas, no lo investigué más porque no quiero piratear el código, ya que hay una mejor solución al usar las funciones integradas

Respondido 20 ago 12, 23:08

hola encontre esta respuesta en algun sitio y tal vez te sirva

//first get the term (I used slug, but  you can aslo use 'name'), see: http://codex.wordpress.org/Function_Reference/get_term_by
$term = get_term_by( 'slug', 'your custom term slug', 'your custom taxonomy' );
//then get the term_id
$term_id = $term->term_id;
//Use 'tax_input' instead of 'post_category' and provide the term_id:
'tax_input' => array( 'your taxonomy' => $term_id )

Espero que ayude.

respondido 23 nov., 12:15

Las etiquetas y las categorías de publicaciones deben ingresarse como una matriz, incluso si es solo una. Entonces 'tags_input' => 'TQM,tag' debiera ser 'tags_input' => array('TQM,tag')

contestado el 03 de mayo de 12 a las 18:05

También lo probé con una matriz... no funciona. Además, esto no es un problema con las etiquetas nuevas, ya que usar las antiguas tampoco funciona. yedidel

La solución de la matriz es correcta pero debería ser 'tags_input' => array('TQM', 'tag') (cada etiqueta es un elemento de matriz). - idInundación

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.