@Legal2019
Всё в имени моём... и радость и печаль...

Как подружить кастомный пост и его таксономию?

Здравствуйте,
Помогите пожалуйста разобраться...
Вопрос 1:
Есть кастомные таксономии и кастомный пост.
Создаю кастомную рубрику (term) и добавляю туда созданные кастомные посты (см. рис. 1)
рис. 1
5ca519f69488e550932982.jpeg

Но когда проваливаюсь посмотреть все посты в этой рубрике, то почему-то там пусто (см. рис. 2)
рис. 2
5ca517ffb2f77376259521.jpeg

При этом, если выбираю в меню "все услуги" то вижу все кастомные посты с "Рубрики услуг" (см. рис. 3)
рис. 3
5ca51942ec674237538087.jpeg
Подскажите пожалуйста что делать...

Код такой:
<?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
	) );
}

Вопрос 2:
А ещё, ни как не пойму, почему у кастомных постов описание не выводится в колонке (там всегда прочерк), хотя по факту, описание есть и выводится (если посмотреть код страницы конкретного поста)

Заранее всем спасибо.
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
@Legal2019 Автор вопроса
Всё в имени моём... и радость и печаль...
Сделал несколько иначе и стало как надо, просто поменял следующее:
function create_uslugi_taxonomy(){
  register_taxonomy('uslugi', array('uslugi'), array(

на
function create_uslugi_taxonomy(){
  register_taxonomy('usluga', array('uslugi'), array(

и изменил в коде регистрации таксономии:
с 'rewrite' => true,
на 'rewrite' => array( 'slug' => 'uslugi' ),
Однако, при переходе по адресу:
http://localhost:8089/uslugi/grazhdanam/
выдаёт error 404... ((((
Как бороться с такой ошибкой???
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
crashxd
@crashxd
Backend разработчик
По первому вопросу: проблема в том, что названия таксономии и посттайпа одинаковые.
Поменяйте одно из них и всё будет работать)
Например:
register_post_type('service',$args); // посттайп
register_taxonomy('section', array('service'), $args); // таксономия

А по второму вопросу не пойму, где вы видите колонку "описание" у посттайпов?
Скрин
fd7183aa70.jpg
Вот эта колонка - это комментарии к посту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы