Произвольный тип постов и таксономии на WordPress

Задача:

Как создать новый тип записи и категорию (таксономия) в CMS WordPress

  1. Создать произвольный тип поста, например «Сотрудники»
  2. Создать разделы (таксономии) «Отделы», чтобы разместить анкеты сотрудников по отделам.
  3. В админке должен быть отдельный пункт меню «Сотрудники» и подпункты: «Список сотрудников», «Добавить сотрудника», «Отделы»
  4. Вывести в публичной части сайта, по ссылке в меню /peoples/ список сотрудников, по клику переход на детальную страницу - анкета сотрудника.


Решение:
1 В папке шаблона создадим папку /post_type/
2 В папке /post_type/ создадим файл post_type_peoples.php
3 В файле function.php
<? //Подключаем файл, в котором создаём тип поста «Сотрудники» require get_template_directory() . '/post_type/post_type_peoples.php'; ?> 
4 В файле post_type_peoples.php
<? // Тип постов — Сотрудники function my_peoples() { $labels = array( 'name' => __( 'Сотрудники' ), 'singular_name' => __( 'Сотрудники' ), 'add_new' => 'Добавить сотрудника', 'add_new_item' => 'Добавить сотрудника', 'edit_item' => 'Редактировать сотрудника', 'new_item' => 'Новые', 'all_items' => 'Список сотрудников', 'view_item' => 'Просмотр на сайте', 'search_items' => 'Искать', 'not_found' => 'Не найдены.', 'not_found_in_trash' => 'В корзине пусто.', ); $supports = array( 'title', 'editor','thumbnail' ); $details = array( 'labels' => $labels, 'description' => 'Описание', 'public' => true, 'menu_position' => 5, 'supports' => $supports, 'has_archive' => true, 'menu_icon' => 'dashicons-format-aside', 'rewrite' => 'peoples', ); register_post_type('peoples', $details); } add_action('init', 'my_peoples'); // Таксономии — Отделы сотрудников function taxonomies_peoples() { $labels = array( 'name' => _x( 'Отделы', 'taxonomy general name' ), 'singular_name' => _x( 'Отдел', 'taxonomy singular name' ), 'search_items' => __( 'Поиск отдела' ), 'all_items' => __( 'Все отделы' ), 'parent_item' => __( 'Parent Genre' ), 'parent_item_colon' => __( 'Parent Genre:' ), 'edit_item' => __( 'Редактировать отдел' ), 'update_item' => __( 'Обновить отдел' ), 'add_new_item' => __( 'Добавить новый отдел' ), 'new_item_name' => __( 'Имя нового отдела' ), 'menu_name' => __( 'Отделы' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, ); register_taxonomy('peoples_cat', 'peoples', $args); } add_action('init', 'taxonomies_peoples'); ?>
5 Чтобы вывести в публичной части список отделов сотрудников (таксономии), создадим файл taxonomy-peoples_cat.php с содержимым:
<?php get_header();?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </div> <?php endwhile; else: ?> <?php endif; ?> <div> <?php echo paginate_links(array('prev_next' => false)); ?> </div> <?php get_footer();?>
6 Чтобы вывести в публичной части список сотрудников (записи), создадим файл archive-peoples.php с содержимым:
<?php get_header(); ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div> <a href="<?php the_permalink();?>"><?php the_title();?></a> </div> <?php endwhile; else: ?> <?php endif; ?> <?php get_footer(); ?>
7 Для детальной страницы создадим файл single-peoples.php
<?php get_header(); ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><?php the_title(); ?></h1> <div><?php the_content(); ?></div> <?php endwhile; else: ?> <?php endif; ?> <?php get_footer(); ?>
Похожие решения:
Изменено: 13 11 2016
Просмотров: 4888

Комментарии

Написать