1

I have a litlle problem. I have a custom taxonomy 'rodzaj' with value i.ex. obrazek. I use this code to add post:

$postArray = array(
                'post_status' => 'publish',
                'post_author'=> get_current_user_id(),
                'post_category'=>array($catId),
                'post_title' => $_POST['titlePhoto'],
                'tax_input' => array( 'rodzaj' => array( 'obrazek') ) , 
);

This code adds a post but without taxonomy. I tried also this:

wp_set_object_terms($postId, "obrazek", 'rodzaj', false);

Doesn't work too.

Working code is:

wp_set_post_terms( $postId, array( 'obrazek'), 'rodzaj' );

Why first 2 functions doesn't work?

I made mistake at the begining. This is full working code:

$catId = get_cat_ID("Obrazki");

         $postArray = array(
            'post_status' => 'publish',
            'post_author'=> get_current_user_id(),
            'post_category'=>array($catId),
            'post_title' => $_POST['titlePhoto'],
            'tags_input' => explode(',', $_POST['tagsPhoto'])
         );


         $postId = wp_insert_post($postArray);
         if($postId) 
         {
              wp_set_object_terms($postId, "obrazek", 'rodzaj', false);

          }

Still doesn't working: wp_set_post_terms($postId, "obrazek", 'rodzaj', false);

and 'tax_input' => array( 'rodzaj' => array( 'obrazek') ) in postArray()

  • hmmm your code examples are incomplete, e.g. we don't see the part where you call wp_insert_post, register your taxonomy etc etc etc – Tom J Nowell Jan 7 '13 at 10:17
1

Have you tried:

wp_set_object_terms( $postId, array( 'obrazek'), 'rodzaj' );

wp_set_object_terms and wp_set_post_terms take the same arguments. wp_set_post_terms even uses wp_set_object_terms internally. The main difference being that you used an array in the one that worked, and you didn't use an array in the one that didn't work.

| improve this answer | |
  • 1
    working code right now is: wp_set_object_terms($postId, "obrazek", 'rodzaj', false); I tried the same parameter with wp_set_post_terms but it doesn't work – Chris Jan 8 '13 at 6:52
  • 1
    Again can you provide the full code? Your function call is just 1 line, without the context provided by the surrounding code it is incredibly difficult to diagnose or debug. – Tom J Nowell Jan 8 '13 at 9:19
  • 1
    Looking back at this, don't use wp_set_post_terms, just use wp_set_object_terms. Also notice my comment on the use of an array in my answer – Tom J Nowell May 24 '13 at 16:11
0

If your taxonomy is hierarchical, then the tax_input parameter of wp_insert_post needs an array if ids, not slugs.

'tax_input' => array(
  'name_of_taxonomy' => array(125) // say your term_id is 125
)

After doing this, you will probably have to update the term count with something like this:

add_action('init','reset_terms_counts', 11, 0);
function reset_terms_counts(){

    $terms_ids = get_terms(array(
      'taxonomy' => 'taxonomy_name'
      ,'fields' => 'ids'
      ,'hide_empty' => false
    ));

    if(is_array($terms_ids)) wp_update_term_count_now($terms_ids, 'taxonomy_name');
  }
}
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.