Not Able to Insert Taxonomy Term Using wp_insert_post()

I have a Custom Post Type called eyeglasses and Custom Taxonomy called models. I also created two terms for taxonomy called M156 and M120. Now I am trying to upload two post for test through wp_insert_post.

This is adding the $title to the post_title of eyeglasses but not adding or updating the term of the post.

function we_load_posts($title, $term)
{
    wp_insert_post(array(
        "post_type" => "eyeglasses",
        "post_title" => $title,
        "tax_input" => array(
                             "models" => array($term)
                           ),
        "post_status" => "publish"
    ));
}
we_load_posts("Montana", "M156");
we_load_posts("Havana", "M120");

can you please let me know what I am missing or doing wrong here?

1 Answer
1

Few points come to mind:

  1. There is a typo in "post_type" => "'eyeglasses" (extra single quote). It should be: "post_type" => "eyeglasses".

  2. Try putting the $term instead of array( $term ):

    "tax_input" => array(
        "models" => $term
    )
    
  3. Also, is it models or model? e.g.

    "tax_input" => array(
        "model" => $term
    )
    
  4. tax_input requires assign_terms capability. So if the user you are running this CODE with, doesn’t have that capability, it’ll not work.

    In that case, the right way is:

    $post_id = wp_insert_post(array(
        "post_type" => "eyeglasses",
        "post_title" => $title,
        "post_status" => "publish"
    ));
    
    wp_set_object_terms( $post_id, $term, 'model' );
    

Leave a Comment