Немного о таксономиях WordPress и произвольных типах записей

Для того что бы каким-либо разным образом систематизировать, представлять и структурировать контент в WordPress, существуют таксономии и произвольные типы записей.
Например вы хотит по мимо стандартных «записей» и «страниц» WordPress, сделать еще свой тип записей с меню в админке — например «Вакансии».

Для этого следует:

1) Внести правки в файл function.php вашей текущей темы

//Раздел Вакасии
    add_action('init', 'register_post_type_jobs'); 
    function register_post_type_jobs() {
        $labels = array(
            'name' => 'Вакансии',
            'singular_name' => 'Вакансии', // админ панель 
            'add_new' => 'Добавить Вакансии',
            'add_new_item' => 'Добавить новую вакансию', // заголовок тега <title>
            'edit_item' => 'Редактировать вакансию',
            'new_item' => 'Новая вакансия',
            'all_items' => 'Все вакансии',
            'view_item' => 'Просмотр вакансий на сайте',
            'search_items' => 'Искать вакансии',
            'not_found' => 'Вакансий не найдено.',
            'not_found_in_trash' => 'В корзине нет вакансий.',
            'menu_name' => 'Вакансии' // ссылка в меню в админке
        );
        $args = array(
            'labels' => $labels,
            'description' => 'Тип записей для публикации вакансий на сайте ',
            'public' => true, //Показывать или прятать в меню
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'show_ui' => true,
            'show_in_menu' => true,
            'menu_position' => 10,
            'menu_icon' => 'dashicons-welcome-write-blog',
            //'capability_type'   => 'post',
            //'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
            'map_meta_cap' => true, // Ставим true чтобы включить дефолтный обработчик специальных прав
            'hierarchical' => true,
            'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
            'taxonomies' => array('cat_jobs'), //Таксономия которая создаётся ниже по коду
            'has_archive' => true,
            'rewrite' => array('feeds', 'pages', 'slug'),
            'query_var' => true,
            'show_in_nav_menus' => null,
            'can_export' => true,
        );
        register_post_type('jobs', $args); //Тип записи
    }

    add_action('init', 'taxonomy_jobs',0);
    function taxonomy_jobs() {
        // заголовки
        $labels = array( //Массив для визуального представленяи в админке
            'name' => 'Категория',
            'singular_name' => 'Категория',
            'search_items' => 'Найти Категорию',
            'all_items' => 'Все категории',
            'parent_item' => 'Родительская категория',
            'parent_item_colon' => 'Родительская категория:',
            'edit_item' => 'Редактировать Категорию',
            'update_item' => 'Обновить категорию',
            'add_new_item' => 'Добавить категорию',
            'new_item_name' => 'Имя новой категории',
            'menu_name' => 'Категории',
        );
        // параметры
        $args = array(
            'label' => '', // определяется параметром $labels->name
            'labels' => $labels,
            'public' => true,
            'show_in_nav_menus' => true, // равен аргументу public
            'show_ui' => true, // равен аргументу public
            'show_tagcloud' => false, // равен аргументу show_ui
            'hierarchical' => true, //определяет формат пользовательской таксономии. false - метки
            'update_count_callback' => '',
            'rewrite' => true,
            //'query_var'             => $taxonomy, // название параметра запроса
            'capabilities' => array(),
            'meta_box_cb' => 'post_categories_meta_box', // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
            'show_admin_column' => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
            '_builtin' => false,
            'show_in_quick_edit' => null, // по умолчанию значение show_ui
            'show_in_quick_edit' => true,
        );
        register_taxonomy('cat_jobs', array('jobs'), $args); //Указываем таксономии cat_jobs использовать тип записей 'jobs'
    }

//Конец Вакансии

 

2) Создать два шаблона для вывода архива ваших Вакансий и для показа каждой вакансии

Так как выше в коде мы создали таксономию «cat_jobs» и тип записей «jobs», создаём соответственно файлы в корне вашей темы «taxonomy-cat_jobs.php» (для отображения архива вакансий) и «single-jobs.php» (для отображения отдельной вакансии). Если вы любите эксперементировать с отображением, тогда возьмите содержимое файла «archive.php» и заполните им «taxonomy-cat_jobs.php», а из файла «single.php» содержимое в «single-jobs.php». Просто пустые файлы «single-jobs.php» и «taxonomy-cat_jobs.php» дадут вам на сайте «белый лист».

3) Зайти в настройки вашего WordPress в меню «Постоянный ссылки» и нажать кнопку сохранить. Данное действие нужно что бы не получать ошибку 404 при заходе на страницу новой таксономии и произвольного типа записи.

Итогом в админке у вас будет вот такая штука

PS: Способ чисто технический. Для достижения такого-же эффекта есть много хороших плагинов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *