Организация пользовательских таксономии / тип поста для ТВ-шоу / программ сайтов WordPress

Мне интересно обрабатывать эти требования в WP с пользовательской таксономии / типа сообщения.
Вот некоторые основные требования, которые я набросал и которые нужно показать.

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)

Для решения этих требований я создал пользовательский тип сообщения wp / таксономию.

  1. Пользовательский тип сообщения:
    • Ток-шоу слизня: ток-шоу
    • Слизняк драмы: драма
  2. Таможенная таксономия:
    • Chanel
    • Список ток-шоу
    • Список драм

Шанель Таксономия соединяется с обоими тип сообщения , Список ток-шоу только подключен к Ток-шоу а также Список драм только подключен к Драмы
Таким образом, новый пост ведет себя как новый эпизод для обоих типов постов.
В New Episode выберете канал и соблюдайте список типов записей для обоих типов записей.
И код:

add_action( 'init', '_addition_init' );

function _addition_init(){
$drama_labels = array(
'name'               => _x( 'Dramas Episode', 'post type general name', 'your-plugin-textdomain' ),
'singular_name'      => _x( 'Drama Online', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name'          => _x( 'Dramas Online', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar'     => _x( 'Drama', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new'            => _x( 'Add Drama Episode', 'dramas', 'your-plugin-textdomain' ),
'add_new_item'       => __( 'Add New Drama Episode', 'your-plugin-textdomain' ),
'new_item'           => __( 'New Drama Episode', 'your-plugin-textdomain' ),
'edit_item'          => __( 'Edit Drama Episode', 'your-plugin-textdomain' ),
'view_item'          => __( 'View Drama Episode', 'your-plugin-textdomain' ),
'all_items'          => __( 'All Drama Episodes', 'your-plugin-textdomain' ),
'search_items'       => __( 'Search Drama Episodes', 'your-plugin-textdomain' ),
'parent_item_colon'  => __( 'Parent Drama Episodes:', 'your-plugin-textdomain' ),
'not_found'          => __( 'No Drama(s) found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No Drama(s) found in Trash.', 'your-plugin-textdomain' )
);

$drama_args = array(
'labels'             => $drama_labels,
'public'             => true,
'publicly_queryable' => true,
'show_ui'            => true,
'show_in_menu'       => true,
'query_var'          => true,
'rewrite'            => array( 'slug' => 'dramas-online' ),
'capability_type'    => 'post',
'has_archive'        => true,
'hierarchical'       => false,
'menu_position'      => null,
'supports'           => array( 'title', 'editor', 'thumbnail', 'comments' )
);
register_post_type( 'dramas-online', $drama_args );
/**
* Custom Post Type: Talk Shows
*/

$talk_show_labels = array(
'name'               => _x( 'Talk Show', 'post type general name', 'your-plugin-textdomain' ),
'singular_name'      => _x( 'Talk Show', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name'          => _x( 'Talk Show', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar'     => _x( 'Talk Show', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new'            => _x( 'Add Talk Show Episode', 'dramas', 'your-plugin-textdomain' ),
'add_new_item'       => __( 'Add New Talk Show Episode', 'your-plugin-textdomain' ),
'new_item'           => __( 'New Talk Show Episode', 'your-plugin-textdomain' ),
'edit_item'          => __( 'Edit Talk Show Episode', 'your-plugin-textdomain' ),
'view_item'          => __( 'View Talk Show Episode', 'your-plugin-textdomain' ),
'all_items'          => __( 'All Talk Show Episodes', 'your-plugin-textdomain' ),
'search_items'       => __( 'Search Talk Show Episodes', 'your-plugin-textdomain' ),
'parent_item_colon'  => __( 'Parent Talk Show Episodes:', 'your-plugin-textdomain' ),
'not_found'          => __( 'No Talk Show(s) found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No talk Show(s) found in Trash.', 'your-plugin-textdomain' )
);

$talk_show_args = array(
'labels'             => $talk_show_labels,
'public'             => true,
'publicly_queryable' => true,
'show_ui'            => true,
'show_in_menu'       => true,
'query_var'          => true,
'rewrite'            => array( 'slug' => 'talk-shows' ),
'capability_type'    => 'post',
'has_archive'        => true,
'hierarchical'       => false,
'menu_position'      => null,
'supports'           => array( 'title', 'editor', 'thumbnail', 'comments' )
);

register_post_type( 'talk-shows', $talk_show_args );
/*
* Custom Category: Tv Chanels
*/
$category_chanels_labels = array(
'name'              => _x( 'Chanels', 'taxonomy general name' ),
'singular_name'     => _x( 'Chanel', 'taxonomy singular name' ),
'search_items'      => __( 'Search Chanels' ),
'all_items'         => __( 'All Chanels' ),
'parent_item'       => __( 'Parent Chanel' ),
'parent_item_colon' => __( 'Parent Chanel:' ),
'edit_item'         => __( 'Edit Chanel' ),
'update_item'       => __( 'Update Chanel' ),
'add_new_item'      => __( 'Add New Chanel' ),
'new_item_name'     => __( 'New Chanel' ),
'menu_name'         => __( 'Chanels' ),
);

$category_chanels_args = array(
'hierarchical'      => true,
'labels'            => $category_chanels_labels,
'show_ui'           => true,
'show_admin_column' => true,
'query_var'         => true,
'rewrite'           => array( 'slug' => 'chanel' ),
);

register_taxonomy( 'chanels', array( 'talk-shows', 'dramas-online'), $category_chanels_args );
/*
* Custom Category: Dramas List
*/
$category_drama_labels = array(
'name'              => _x( 'Drama', 'taxonomy general name' ),
'singular_name'     => _x( 'Drama', 'taxonomy singular name' ),
'search_items'      => __( 'Search Drama' ),
'all_items'         => __( 'All Drama' ),
'parent_item'       => __( 'Parent Drama' ),
'parent_item_colon' => __( 'Parent Drama:' ),
'edit_item'         => __( 'Edit Drama' ),
'update_item'       => __( 'Update Drama' ),
'add_new_item'      => __( 'Add New Drama' ),
'new_item_name'     => __( 'New Drama' ),
'menu_name'         => __( 'Drama List' ),
);

$category_drama_args = array(
'hierarchical'      => true,
'labels'            => $category_drama_labels,
'show_ui'           => true,
'show_admin_column' => true,
'query_var'         => true,
'rewrite'           => array( 'slug' => 'drama' ),
);

register_taxonomy( 'drama', array('dramas-online'), $category_drama_args );
// Programas
$category_programs_labels = array(
'name'              => _x( 'Programs', 'taxonomy general name' ),
'singular_name'     => _x( 'Program', 'taxonomy singular name' ),
'search_items'      => __( 'Search Program' ),
'all_items'         => __( 'All Programs' ),
'parent_item'       => __( 'Parent Program' ),
'parent_item_colon' => __( 'Parent Program:' ),
'edit_item'         => __( 'Edit Program' ),
'update_item'       => __( 'Update Program' ),
'add_new_item'      => __( 'Add New Program' ),
'new_item_name'     => __( 'New Program' ),
'menu_name'         => __( 'Programs' ),
);

$category_programs_args = array(
'hierarchical'      => true,
'labels'            => $category_programs_labels,
'show_ui'           => true,
'show_admin_column' => true,
'query_var'         => true,
'rewrite'           => array('slug' => 'program' ),
);

register_taxonomy( 'program', array('talk-shows'), $category_programs_args );
}

И, наконец, возникли проблемы с показом драм и ток-шоу по каналам с каждым эпизодом, как было упомянуто, и показом ранее.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …