Для того что бы каким-либо разным образом систематизировать, представлять и структурировать контент в 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: Способ чисто технический. Для достижения такого-же эффекта есть много хороших плагинов.