admiva
admiva

Reputation: 17

Wordpress: When I add a post, the term will automatically be created?

I have a custom post type called “products” with custom taxonomy “author”. Now I have another custom post type called “authors”.

And I would like this: When I publish a new post in my post type “authors” then a new term with same title will automatically be created in my taxonomy “author”. Would it be possible?

Thanks for your help.

Upvotes: 1

Views: 450

Answers (1)

Somin
Somin

Reputation: 61

Please try this might be this will help you.

 function update_custom_terms($post_id) {

  // only update terms if it's a authors post
  if ( 'authors' != get_post_type($post_id)) {
    return;
  }

  // don't create or update terms for system generated posts
  if (get_post_status($post_id) == 'auto-draft') {
    return;
  }

  /*
  * Grab the post title and slug to use as the new 
  * or updated term name and slug
  */
  $term_title = get_the_title($post_id);
  $term_slug = get_post( $post_id )->post_name;

  /*
  * Check if a corresponding term already exists by comparing 
  * the post ID to all existing term descriptions. 
  */
  $existing_terms = get_terms('author', array(
    'hide_empty' => false
    )
  );

  foreach($existing_terms as $term) {
    if ($term->description == $post_id) {
      //term already exists, so update it and we're done
      wp_update_term($term->term_id, 'author', array(
        'name' => $term_title,
        'slug' => $term_slug
        )
      );
      return;
    }
  }

  /* 
  * If we didn't find a match above, this is a new post, 
  * so create a new term.
  */
  wp_insert_term($term_title, 'author', array(
    'slug' => $term_slug,
    'description' => $post_id
    )
  );
}

//run the update function whenever a post is created or edited
add_action('save_post', 'update_custom_terms');

Upvotes: 2

Related Questions