Answer the question
In order to leave comments, you need to log in
How to make a custom post and its taxonomy work together?
Hello,
Please help me figure it out ...
Question 1:
There are custom taxonomies and a custom post.
I create a custom category (term) and add the created custom posts there (see Fig. 1)
<?php
/* Юридические услуги (Н)
* ********************************* */
add_action( 'init', 'true_register_uslugi' ); // Использовать функцию только внутри хука init
function true_register_uslugi() {
$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' => true,
'description' => __( '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' => true, // (типа bool) будет ли пост тип иерархической (например, страницы). По умолчанию false.
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) // основная функция(ы) тип записи поддерживает.
// Служит в качестве псевдонима для вызова add_post_type_support() напрямую.
// Основные функции включают "Заголовок", "редактор", "комментарии", "редакции", "trackbacks", "Автор", "выдержка", "страница-атрибуты",
// "миниатюра", "пользовательские поля" и "пост-форматы".
// Кроме того, функция' revisions 'определяет, будет ли Тип записи хранить ревизии, а функция' comments ' определяет,
// будет ли Количество комментариев отображаться на экране редактирования.
// Defaults-массив, содержащий 'title' и 'editor'.
);
register_post_type('uslugi',$args);
}
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;
}
return $column_name;
}, 10, 2);
add_action('init', 'create_uslugi_taxonomy');
function create_uslugi_taxonomy(){
register_taxonomy('uslugi', array('uslugi'), array(
'label' => '', // определяется параметром $labels->name
'labels' => array(
'name' => 'Рубрики услуг',
'singular_name' => 'Вы тут', // Отображает фразу до наименования. К примеру: "Это рубрика: | наименование рубрики | "
'search_items' => 'Найти рубрики',
'all_items' => 'Все рубрики',
'view_item ' => 'Просмотр рубрики',
'parent_item' => 'Родительская рубрика',
'parent_item_colon' => 'Parent Genre:',
'edit_item' => 'Изменить рубрику',
'update_item' => 'Обновить рубрику',
'add_new_item' => 'Добавить новую рубрику',
'new_item_name' => 'New Genre Name',
'menu_name' => 'Рубрики услуг',
),
'description' => 'юридические услуги', // описание таксономии
'public' => true,
'publicly_queryable' => null, // равен аргументу public
'show_in_nav_menus' => true, // равен аргументу public
'show_ui' => true, // равен аргументу public
'show_in_menu' => true, // равен аргументу show_ui
'show_tagcloud' => true, // равен аргументу show_ui
'show_in_rest' => null, // добавить в REST API
'rest_base' => null, // $taxonomy
'hierarchical' => true, //false,
'update_count_callback' => '',
'rewrite' => true,
//'query_var' => $taxonomy, // название параметра запроса
'capabilities' => array(),
'meta_box_cb' => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
'show_admin_column' => true, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
'_builtin' => false,
'show_in_quick_edit' => null, // по умолчанию значение show_ui
) );
}
Answer the question
In order to leave comments, you need to log in
I did it a little differently and it became as it should, just changed the following:
function create_uslugi_taxonomy(){
register_taxonomy('uslugi', array('uslugi'), array(
function create_uslugi_taxonomy(){
register_taxonomy('usluga', array('uslugi'), array(
'rewrite' => true,
On the first question: the problem is that the taxonomy and posttype names are the same.
Change one of them and everything will work)
For example:
register_post_type('service',$args); // посттайп
register_taxonomy('section', array('service'), $args); // таксономия
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question