Решение, как создать новый тип записи и категорию (таксономия) в CMS WordPress
- Создать произвольный тип поста, например «Сотрудники»
- Создать разделы (таксономии) «Отделы», чтобы разместить анкеты сотрудников по отделам.
- В админке должен быть отдельный пункт меню «Сотрудники» и подпункты: «Список сотрудников», «Добавить сотрудника», «Отделы»
- Вывести в публичной части сайта, по ссылке в меню /peoples/ список сотрудников, по клику переход на детальную страницу - анкета сотрудника.
Решение:
1 В папке шаблона создадим папку /post_type/
2 В папке /post_type/ создадим файл post_type_peoples.php
3 В файле function.php
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(); ?>
Похожие решения:
Комментарии (0)