if ( ! function_exists( 'legaluslugi_custom_taxonomy' ) ) {
// Register Custom Taxonomy
function legaluslugi_custom_taxonomy() {
$labels = array(
'name' => _x( 'Юридические услуги', 'Taxonomy General Name', 'text_domain' ),
'singular_name' => _x( 'Юр. услуги', 'Taxonomy Singular Name', 'text_domain' ),
'menu_name' => __( 'юридические', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'parent_item' => __( 'Главная группа юридических услуг', 'text_domain' ),
'parent_item_colon' => __( 'Родительская услуга:', 'text_domain' ),
'new_item_name' => __( 'Новое название группы юр. услуги', 'text_domain' ),
'add_new_item' => __( 'Добавить новую группу юр. услуг', 'text_domain' ),
'edit_item' => __( 'Редактировать группу юридических услуг', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'view_item' => __( 'Просмотр элемента группы юр. услуг', 'text_domain' ),
'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ),
'choose_from_most_used' => __( 'Choose from the most used', 'text_domain' ),
'popular_items' => __( 'Popular Items', 'text_domain' ),
'search_items' => __( 'Search Items', 'text_domain' ),
'not_found' => __( 'Not Found', 'text_domain' ),
'no_terms' => __( 'No items', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'rewrite' => array( 'slug' => 'usluga' ),
);
register_taxonomy( 'services', array( 'uslugi' ), $args);
}
add_action( 'init', 'legaluslugi_custom_taxonomy', 1 );
}
// Регистрируем метки для таксономии "uslugi"
if ( ! function_exists( 'mylabel_custom_taxonomy' ) ) {
function mylabel_custom_taxonomy() {
$labels = array(
'name' => _x( 'Метки для услуг', 'taxonomy general name', 'textdomain' ), // 'taxonomy general name' - общее название таксономии, 'textdomain' - текст домена
'singular_name' => _x( 'Метки услуг', 'taxonomy singular name', 'textdomain' ),
'search_items' => __( 'Поиск меток по услугам', 'textdomain' ),
'popular_items' => __( 'Популярные метки услуг', 'textdomain' ),
'all_items' => __( 'Все метки по услугам', 'textdomain' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Править метки', 'textdomain' ),
'update_item' => __( 'Обновить метки', 'textdomain' ),
'add_new_item' => __( 'Добавить новую метку', 'textdomain' ),
'new_item_name' => __( 'New Writer Name', 'textdomain' ),
'separate_items_with_commas' => __( 'Separate writers with commas', 'textdomain' ),
'add_or_remove_items' => __( 'Add or remove writers', 'textdomain' ),
'choose_from_most_used' => __( 'Choose from the most used writers', 'textdomain' ),
'not_found' => __( 'No writers found.', 'textdomain' ),
'menu_name' => __( 'Метки для услуг', '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' => 'tag-uslugi' ),
);
register_taxonomy( 'mylabel', array( 'uslugi' ), $args);
}
add_action( 'init', 'mylabel_custom_taxonomy', 4 );
}
add_action( 'init', 'true_register_legaluslugi' ); // Использовать функцию только внутри хука init
function true_register_legaluslugi() {
$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,
'public' => true,
'menu_icon' => 'dashicons-welcome-learn-more', //картинки из файла dashicons.css Описание тут: https://developer.wordpress.org/resource/dashicons/#image-rotate-right
'menu_position' => 5,
// 'has_archive' => FALSE, // Включает архивы типов записей. Будет использовать $post_type как архивный слиток по умолчанию.
// По умолчанию: false
// Примечание: будет генерировать правильные правила перезаписи, если перезапись включена.
// Также используйте rewrite, чтобы изменить используемый слиток.
// Если строка, то она должна быть переводимой.
'has_archive' => true, // Если True - то в хлебные крошки выводится $labels = array('name' => 'Юридические услуги',)
// Пример с false: Главная » Организациям » запись № 1
// Пример с True: Главная » Юридические услуги » Организациям » запись № 1
'description' => __('Выберите интересующие вас услуги', 'your-plugin-textdomain'), // (строка) краткий описательный обзор того, что пост типа.
'publicly_queryable' => true,
'show_ui' => true, // нужно ли создавать и разрешить пользовательский интерфейс для управления Этот тип записи в админке. Значение по умолчанию - $public.
'show_in_menu' => true, // где показывают типа пост в админ меню. Для работы $show_ui должен иметь значение true. Если true, Тип сообщения отображается в собственном меню верхнего уровня. Если false, меню не отображается. Если строка существующего меню верхнего уровня (например. 'tools.php ' или ' edit.php?post_type=page'), Тип сообщения будет помещен в качестве подменю этого. Значение по умолчанию - $show_ui.
'query_var' => true, // устанавливает query_var ключ для данного типа пост.
// По умолчанию ключ $post_type.
// Если false, Тип сообщения не может быть загружен в ?{query_var} = {post_slug}.
// Если задан как строка, то запрос ?{query_var_string} = {post_slug} будет действительным.
//'rewrite' => array( 'slug' => 'uslugi' ),
'capability_type' => 'post', // массив из функции для этого типа. $capability_type используется в качестве основы для создания возможностей по умолчанию.
// Увидеть get_post_type_capabilities().
'hierarchical' => false, // Если будет true, то в хлебных крошках не выводится категория
// Пример с false: Главная » Юридические услуги » Организациям » запись № 1
// Пример с true: Главная » Юридические услуги » запись № 1
// 'hierarchical' => true, // (boolean) (необязательно) является ли тип записи иерархическим (например, страница).
// Позволяет указать родителя. Параметр 'поддерживает' должен содержать страницу-атрибутов,
// чтобы показать Родительский выберите поле на странице редактирования.
// По умолчанию: false
'taxonomies' => array('mylabel'), // добавит поддержку меток к custom post type. Если добавить в таком виде: 'taxonomies' => array('post_tag'), то все метки из категорий цепляются.
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments', 'revisions', 'page-attributes') //'trackbacks','post-formats' ) // основная функция(ы) тип записи поддерживает.
// 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) // основная функция(ы) тип записи поддерживает.
// Служит в качестве псевдонима для вызова add_post_type_support() напрямую.
// Основные функции включают "Заголовок", "редактор", "комментарии", "редакции", "trackbacks", "Автор", "выдержка", "страница-атрибуты",
// "миниатюра", "пользовательские поля" и "пост-форматы".
// Кроме того, функция' revisions 'определяет, будет ли Тип записи хранить ревизии, а функция' comments ' определяет,
// будет ли Количество комментариев отображаться на экране редактирования.
// Defaults-массив, содержащий 'title' и 'editor'.
);
register_post_type('uslugi',$args);
// это регистрация "произвольного" типа записей 'uslugi' в которой могут быть "метки" и "рубрики". При этом рубрики и метки необходимо регистрировать отдельно.
// "рубрики" в созданной произвольном типе записей называются "термами", а таксономией называется корень дерева рубрик, которые будут отображаться в ней.
// К примеру: taxonomy=category (для записей по умолчанию) ! не до писано !
// К примеру: taxonomy=category (для записей по умолчанию) ! не до писано !
}
add_filter( 'manage_uslugi_posts_columns', function ( $columns ) {
$my_columns = [
'id' => 'ID',
'image' => 'Миниатюра',
];
return array_slice($columns, 0, 1) + $my_columns + $columns;
} );
add_filter( 'manage_uslugi_posts_custom_column', function ( $column_name, $post_id ) {
if ( $column_name === 'id' ){
echo $post_id;
}
if ( $column_name === 'image' && has_post_thumbnail() ){
?>
<a href="<?php get_edit_post_link(); ?>">
<?php the_post_thumbnail( 'thumbnail' ); ?>
</a>
<?php
}
return $column_name;
}, 10, 2);
add_action( 'admin_print_footer_scripts-edit.php', function () {
?>
<style>
.column-id {
width: 35px;
text-align: center;
}
.column-image {
width: 100px;
}
.column-image img {
max-width: 100%;
height: auto;
}
</style>
<?php
} );