Search code examples
wordpresscustom-post-type

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.


Solution

  • 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');