title: Organize the custom taxonomy/post type for Tv shows/programs Wordpress sites
body: <p>I wondering to handle these requirement in wp with custom taxonomy/post type.
  Here is the some basic requirement I sketch and need to show.</p>
  
  <pre><code>Online Talk Show
  
   Chanel 1
  
   TS1 Episode1 Episode2 Episode3 ... Episode(n)
   TS2 Episode1 Episode2 Episode3 ... Episode(n)
   TS3 Episode1 Episode2 Episode3 ... Episode(n)
   .
   .
   .
   TS(n) Episode1 Episode2 Episode3 ... Episode(n)
  
   Chanel 2
  
   TS1 Episode1 Episode2 Episode3 ... Episode(n)
   .
   .
   .
   TS(n) Episode1 Episode2 Episode3 ... Episode(n)
   .
   .
   .
  
   Chanel (n)
  
  Online Dramas
  
  Chanel 1
  
  D1 Episode1 Episode2 Episode3 ... Episode(n)
  .
  .
  .
  D(n) Episode1 Episode2 Episode3 ... Episode(n)
  
  Chanel 2
  
  D1 Episode1 Episode2 Episode3 ... Episode(n)
  .
  .
  .
  D(n) Episode1 Episode2 Episode3 ... Episode(n)
  .
  .
  .
  
  Chanel (n)
  </code></pre>
  
  <p>For the solution of these requirement I have create wp custom post type/taxonomy.</p>
  
  <ol>
  <li>Custom post Type:
  <ul>
  <li>Talk Show slug:talk-show</li>
  <li>Dramas    slug:drama</li>
  </ul></li>
  <li>Custom Taxonomy:
  <ul>
  <li>Chanel</li>
  <li>Talk Show List</li>
  <li>Dramas List</li>
  </ul></li>
  </ol>
  
  <p>Chanel Taxonomy connect to both <em>post type</em> ,  <em>Talk Show List</em> only connected to <strong>Talk Show</strong> and <em>Dramas List</em> only connected to <strong>Dramas</strong>
  So, new post behave as new episode for both post type.
  In New Episode will choose channel and respect post type list for both post type.
  And The Code:</p>
  
  <pre><code>add_action( 'init', '_addition_init' );
  
  function _addition_init(){
  $drama_labels = array(
       'name'               =&gt; _x( 'Dramas Episode', 'post type general name', 'your-plugin-textdomain' ),
       'singular_name'      =&gt; _x( 'Drama Online', 'post type singular name', 'your-plugin-textdomain' ),
       'menu_name'          =&gt; _x( 'Dramas Online', 'admin menu', 'your-plugin-textdomain' ),
       'name_admin_bar'     =&gt; _x( 'Drama', 'add new on admin bar', 'your-plugin-textdomain' ),
       'add_new'            =&gt; _x( 'Add Drama Episode', 'dramas', 'your-plugin-textdomain' ),
       'add_new_item'       =&gt; __( 'Add New Drama Episode', 'your-plugin-textdomain' ),
       'new_item'           =&gt; __( 'New Drama Episode', 'your-plugin-textdomain' ),
       'edit_item'          =&gt; __( 'Edit Drama Episode', 'your-plugin-textdomain' ),
       'view_item'          =&gt; __( 'View Drama Episode', 'your-plugin-textdomain' ),
       'all_items'          =&gt; __( 'All Drama Episodes', 'your-plugin-textdomain' ),
       'search_items'       =&gt; __( 'Search Drama Episodes', 'your-plugin-textdomain' ),
       'parent_item_colon'  =&gt; __( 'Parent Drama Episodes:', 'your-plugin-textdomain' ),
       'not_found'          =&gt; __( 'No Drama(s) found.', 'your-plugin-textdomain' ),
       'not_found_in_trash' =&gt; __( 'No Drama(s) found in Trash.', 'your-plugin-textdomain' )
   );
  
  $drama_args = array(
   'labels'             =&gt; $drama_labels,
   'public'             =&gt; true,
   'publicly_queryable' =&gt; true,
   'show_ui'            =&gt; true,
   'show_in_menu'       =&gt; true,
   'query_var'          =&gt; true,
   'rewrite'            =&gt; array( 'slug' =&gt; 'dramas-online' ),
   'capability_type'    =&gt; 'post',
   'has_archive'        =&gt; true,
   'hierarchical'       =&gt; false,
   'menu_position'      =&gt; null,
   'supports'           =&gt; array( 'title', 'editor', 'thumbnail', 'comments' )
   );
  register_post_type( 'dramas-online', $drama_args );
  /**
  * Custom Post Type: Talk Shows
  */
  
  $talk_show_labels = array(
     'name'               =&gt; _x( 'Talk Show', 'post type general name', 'your-plugin-textdomain' ),
     'singular_name'      =&gt; _x( 'Talk Show', 'post type singular name', 'your-plugin-textdomain' ),
     'menu_name'          =&gt; _x( 'Talk Show', 'admin menu', 'your-plugin-textdomain' ),
     'name_admin_bar'     =&gt; _x( 'Talk Show', 'add new on admin bar', 'your-plugin-textdomain' ),
     'add_new'            =&gt; _x( 'Add Talk Show Episode', 'dramas', 'your-plugin-textdomain' ),
     'add_new_item'       =&gt; __( 'Add New Talk Show Episode', 'your-plugin-textdomain' ),
     'new_item'           =&gt; __( 'New Talk Show Episode', 'your-plugin-textdomain' ),
     'edit_item'          =&gt; __( 'Edit Talk Show Episode', 'your-plugin-textdomain' ),
     'view_item'          =&gt; __( 'View Talk Show Episode', 'your-plugin-textdomain' ),
     'all_items'          =&gt; __( 'All Talk Show Episodes', 'your-plugin-textdomain' ),
     'search_items'       =&gt; __( 'Search Talk Show Episodes', 'your-plugin-textdomain' ),
     'parent_item_colon'  =&gt; __( 'Parent Talk Show Episodes:', 'your-plugin-textdomain' ),
     'not_found'          =&gt; __( 'No Talk Show(s) found.', 'your-plugin-textdomain' ),
     'not_found_in_trash' =&gt; __( 'No talk Show(s) found in Trash.', 'your-plugin-textdomain' )
     );
  
  $talk_show_args = array(
     'labels'             =&gt; $talk_show_labels,
     'public'             =&gt; true,
     'publicly_queryable' =&gt; true,
     'show_ui'            =&gt; true,
     'show_in_menu'       =&gt; true,
     'query_var'          =&gt; true,
     'rewrite'            =&gt; array( 'slug' =&gt; 'talk-shows' ),
     'capability_type'    =&gt; 'post',
     'has_archive'        =&gt; true,
     'hierarchical'       =&gt; false,
     'menu_position'      =&gt; null,
     'supports'           =&gt; array( 'title', 'editor', 'thumbnail', 'comments' )
     );
  
  register_post_type( 'talk-shows', $talk_show_args );
  /*
  * Custom Category: Tv Chanels
  */ 
   $category_chanels_labels = array(
       'name'              =&gt; _x( 'Chanels', 'taxonomy general name' ),
       'singular_name'     =&gt; _x( 'Chanel', 'taxonomy singular name' ),
       'search_items'      =&gt; __( 'Search Chanels' ),
       'all_items'         =&gt; __( 'All Chanels' ),
       'parent_item'       =&gt; __( 'Parent Chanel' ),
       'parent_item_colon' =&gt; __( 'Parent Chanel:' ),
       'edit_item'         =&gt; __( 'Edit Chanel' ),
       'update_item'       =&gt; __( 'Update Chanel' ),
       'add_new_item'      =&gt; __( 'Add New Chanel' ),
       'new_item_name'     =&gt; __( 'New Chanel' ),
       'menu_name'         =&gt; __( 'Chanels' ),
   );
  
   $category_chanels_args = array(
       'hierarchical'      =&gt; true,
       'labels'            =&gt; $category_chanels_labels,
       'show_ui'           =&gt; true,
       'show_admin_column' =&gt; true,
       'query_var'         =&gt; true,
       'rewrite'           =&gt; array( 'slug' =&gt; 'chanel' ),
   );
  
   register_taxonomy( 'chanels', array( 'talk-shows', 'dramas-online'), $category_chanels_args );
  /*
  * Custom Category: Dramas List
  */ 
   $category_drama_labels = array(
       'name'              =&gt; _x( 'Drama', 'taxonomy general name' ),
       'singular_name'     =&gt; _x( 'Drama', 'taxonomy singular name' ),
       'search_items'      =&gt; __( 'Search Drama' ),
       'all_items'         =&gt; __( 'All Drama' ),
       'parent_item'       =&gt; __( 'Parent Drama' ),
       'parent_item_colon' =&gt; __( 'Parent Drama:' ),
       'edit_item'         =&gt; __( 'Edit Drama' ),
       'update_item'       =&gt; __( 'Update Drama' ),
       'add_new_item'      =&gt; __( 'Add New Drama' ),
       'new_item_name'     =&gt; __( 'New Drama' ),
       'menu_name'         =&gt; __( 'Drama List' ),
   );
  
   $category_drama_args = array(
       'hierarchical'      =&gt; true,
       'labels'            =&gt; $category_drama_labels,
       'show_ui'           =&gt; true,
       'show_admin_column' =&gt; true,
       'query_var'         =&gt; true,
       'rewrite'           =&gt; array( 'slug' =&gt; 'drama' ),
   );
  
   register_taxonomy( 'drama', array('dramas-online'), $category_drama_args );
   // Programas
   $category_programs_labels = array(
     'name'              =&gt; _x( 'Programs', 'taxonomy general name' ),
     'singular_name'     =&gt; _x( 'Program', 'taxonomy singular name' ),
     'search_items'      =&gt; __( 'Search Program' ),
     'all_items'         =&gt; __( 'All Programs' ),
     'parent_item'       =&gt; __( 'Parent Program' ),
     'parent_item_colon' =&gt; __( 'Parent Program:' ),
     'edit_item'         =&gt; __( 'Edit Program' ),
     'update_item'       =&gt; __( 'Update Program' ),
     'add_new_item'      =&gt; __( 'Add New Program' ),
     'new_item_name'     =&gt; __( 'New Program' ),
     'menu_name'         =&gt; __( 'Programs' ),
     );
  
   $category_programs_args = array(
     'hierarchical'      =&gt; true,
     'labels'            =&gt; $category_programs_labels,
     'show_ui'           =&gt; true,
     'show_admin_column' =&gt; true,
     'query_var'         =&gt; true,
     'rewrite'           =&gt; array('slug' =&gt; 'program' ),
     );
  
   register_taxonomy( 'program', array('talk-shows'), $category_programs_args );
  }
  </code></pre>
  
  <p>And finally facing issues to show dramas and talk show according to channels with each episode as mentioned and show pattern earlier. </p>