«Вложение» пользовательских типов записей в Wordpress - PullRequest
0 голосов
/ 10 июня 2018

Я работаю над страницей, и я столкнулся с проблемой, которую не могу решить, поэтому я надеялся, что кто-нибудь мне поможет.

Позвольте мне проиллюстрировать мою проблему на случайном примере, потому что яМне трудно это объяснить.

Поэтому я создал собственный тип поста "фильмы".Я создал кучу фильмов в своем администраторе WP, и я могу получить к ним доступ, посетив domain.com/movies/moviename.

А что если я захочу разделить фильмы по жанрам.Так что у меня есть комедия, боевик, триллер.Я хочу иметь страницу, на которой демонстрируются все фильмы одного жанра и каждый фильм, доступ к которому я хочу получить через domain.com/movies/genre/moviename.

Как получить эту структуру?Можно ли как-то создать тип подпоста для каждого жанра?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 10 июня 2018

Что вы, вероятно, ищете, так это добавление таксономий к вашему пользовательскому типу записи: https://codex.wordpress.org/Function_Reference/register_taxonomy

Вот пример использования.Предполагая, что ваши жанры будут иерархическими, то есть они могут быть вложенными.Они эквивалентны категориям в сообщениях (например, Триллер> Действие, Триллер> Ужасы)

Вторая часть предназначена для неиерархической таксономии, то есть она не может быть вложенной.Это эквивалентно тегам в сообщениях.(например, #Steven Spielberg)

// hook into the init action and call create_movie_taxonomies when it fires
add_action( 'init', 'create_movie_taxonomies', 0 );

// create two taxonomies, genres and directors for the post type "movie"
function create_movie_taxonomies() {
    // Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              => _x( 'Genres', 'taxonomy general name', 'textdomain' ),
        'singular_name'     => _x( 'Genre', 'taxonomy singular name', 'textdomain' ),
        'search_items'      => __( 'Search Genres', 'textdomain' ),
        'all_items'         => __( 'All Genres', 'textdomain' ),
        'parent_item'       => __( 'Parent Genre', 'textdomain' ),
        'parent_item_colon' => __( 'Parent Genre:', 'textdomain' ),
        'edit_item'         => __( 'Edit Genre', 'textdomain' ),
        'update_item'       => __( 'Update Genre', 'textdomain' ),
        'add_new_item'      => __( 'Add New Genre', 'textdomain' ),
        'new_item_name'     => __( 'New Genre Name', 'textdomain' ),
        'menu_name'         => __( 'Genre', 'textdomain' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'genre' ),
    );

    register_taxonomy( 'genre', array( 'movie' ), $args );

    // Add new taxonomy, NOT hierarchical (like tags)
    $labels = array(
        'name'                       => _x( 'Directors', 'taxonomy general name', 'textdomain' ),
        'singular_name'              => _x( 'Director', 'taxonomy singular name', 'textdomain' ),
        'search_items'               => __( 'Search Directors', 'textdomain' ),
        'popular_items'              => __( 'Popular Directors', 'textdomain' ),
        'all_items'                  => __( 'All Directors', 'textdomain' ),
        'parent_item'                => null,
        'parent_item_colon'          => null,
        'edit_item'                  => __( 'Edit Director', 'textdomain' ),
        'update_item'                => __( 'Update Director', 'textdomain' ),
        'add_new_item'               => __( 'Add New Director', 'textdomain' ),
        'new_item_name'              => __( 'New Director Name', 'textdomain' ),
        'separate_items_with_commas' => __( 'Separate directors with commas', 'textdomain' ),
        'add_or_remove_items'        => __( 'Add or remove directors', 'textdomain' ),
        'choose_from_most_used'      => __( 'Choose from the most used directors', 'textdomain' ),
        'not_found'                  => __( 'No directors found.', 'textdomain' ),
        'menu_name'                  => __( 'Directors', 'textdomain' ),
    );

    $args = array(
        'hierarchical'          => false,
        'labels'                => $labels,
        'show_ui'               => true,
        'show_admin_column'     => true,
        'update_count_callback' => '_update_post_term_count',
        'query_var'             => true,
        'rewrite'               => array( 'slug' => 'director' ),
    );

    register_taxonomy( 'director', 'movie', $args );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...