san_jorich
@san_jorich
Творческий кодер

Конфликт двух Custom Post Type — Как исправить?

В сводной таблице записей произвольного типа перестали отображаться записи, Хотя система честно говорит что всего их 2 и опубликованно тоже две. Как быть, в какую сторону копать. Почему это вдруг произошло?
5bf293aff22e4623044383.jpeg
UPD:
Стал разбираться в ситуации, и понял что "баг" исчезает, когда я закомментировал еще один произвольныцй тип записи. Приведу полный код файла, отвечающий за вывод CPT плагина. Конфликтный кусок закомментирован
<?php 

// Регистрация Объектов недвижимости
if ( ! function_exists('estate_post_type') ) {

function estate_post_type() {

    $labels = array(
        'name'                  => _x( 'Объекты недвижимости', 'estate' ),
        'singular_name'         => _x( 'Объекты', 'estate' ),
        'menu_name'             => __( 'Объекты недвижимости', 'estate' ),
        'name_admin_bar'        => __( 'Объект', 'estate' ),
        'archives'              => __( 'Объекты и услуги', 'estate' ),
        'attributes'            => __( 'Аттрибуты Объекта', 'estate' ),
        'parent_item_colon'     => __( 'Главный Объект:', 'estate' ),
        'all_items'             => __( 'Все Объекты', 'estate' ),
        'add_new_item'          => __( 'Добавить новый объект', 'estate' ),
        'add_new'               => __( 'Добавить новый объект', 'estate' ),
        'new_item'              => __( 'Новый Объект', 'estate' ),
        'edit_item'             => __( 'Редактировать Объект', 'estate' ),
        'update_item'           => __( 'Обновиить Объект', 'estate' ),
        'view_item'             => __( 'Просмотеть Объект', 'estate' ),
        'view_items'            => __( 'Просмотреть Объект', 'estate' ),
        'search_items'          => __( 'Найти Объект', 'estate' ),
        'not_found'             => __( 'Объектов нахрен нет', 'estate' ),
        'not_found_in_trash'    => __( 'Корзина Объектов пуста', 'estate' ),
        'featured_image'        => __( 'Изображение Объекта', 'estate' ),
        'set_featured_image'    => __( 'Установить изображение Объекта', 'estate' ),
        'remove_featured_image' => __( 'Удалить изображение Объекта', 'estate' ),
        'use_featured_image'    => __( 'Все изображения Объекта', 'estate' ),
        'insert_into_item'      => __( 'Добавить в Объект', 'estate' ),
        'uploaded_to_this_item' => __( 'Прикрепить к этому Объекту', 'estate' ),
        'items_list'            => __( 'Объект-лист', 'estate' ),
        'items_list_navigation' => __( 'Объект-лист', 'estate' ),
        'filter_items_list'     => __( 'Фильтр Объектов', 'estate' ),
    );
    $args = array(
        'label'                 => __( 'Объекты', 'estate' ),
        'description'           => __( 'Объекты недвижимости.', 'estate' ),
        'labels'                => $labels,
        'supports'              => array( 'title', /*'editor',*/ 'revisions', 'thumbnail' ),
        'taxonomies'            => array( 'estate_type', 'estate_operation', 'estate_district', 'estate_building_type', 'estate_class'),
        'hierarchical'          => false,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        'menu_icon'             => 'dashicons-admin-home',
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => true,
        'exclude_from_search'   => true,
        'publicly_queryable'    => true,
        'capability_type'       => 'page',
    );
    register_post_type( 'estate', $args );

}
add_action( 'init', 'estate_post_type', 0 );

}

/*if ( ! function_exists('add_agency_operation_post_type') ) {

// Register Custom Post Type
function add_agency_operation_post_type() {

    $labels = array(
        'name'                  => 'Логи операций',
        'singular_name'         => 'Логи операций',
        'menu_name'             => 'Логи операций',
        'name_admin_bar'        => 'Операции агенства',
        'archives'              => 'Логи операций',
        'attributes'            => 'Аттрибуты операции',
        'parent_item_colon'     => 'Главная операция',
        'all_items'             => 'Все операции',
        'add_new_item'          => 'Создать новую задачу',
        'add_new'               => 'Добавить задачу',
        'new_item'              => 'Новая задача',
        'edit_item'             => 'Редактировать задачу',
        'update_item'           => 'Обновить задачу',
        'view_item'             => 'Смотреть задачу',
        'view_items'            => 'Смотреть задачу',
        'search_items'          => 'Найти задачу',
        'not_found'             => 'Не найдено',
        'not_found_in_trash'    => 'В корзине не найдено',
        'featured_image'        => 'Featured Image',
        'set_featured_image'    => 'Установить фото',
        'remove_featured_image' => 'Удалить фото',
        'use_featured_image'    => 'Использовать в качестве фото',
        'insert_into_item'      => 'Добавить к задаче',
        'uploaded_to_this_item' => 'Добавить к этой задаче',
        'items_list'            => 'Список задач',
        'items_list_navigation' => 'Items list navigation',
        'filter_items_list'     => 'Фильтр задач',
    );
    $rewrite = array(
        'slug'                  => 'tasks_log',
        'with_front'            => true,
        'pages'                 => true,
        'feeds'                 => true,
    );
    $args = array(
        'label'                 => 'Задачи и Операции',
        'description'           => 'Задачи и Операции, выполняемые и назначаемые персоналу системы (Агенты, Менеджеры итд)',
        'labels'                => $labels,
        'supports'              => array( 'title','commets','editor'),
        'taxonomies'            => array(),
        'hierarchical'          => true,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => true,
        'exclude_from_search'   => false,
        'publicly_queryable'    => true,
        'query_var'             => 'post_type',
        'rewrite'               => $rewrite,
        'capability_type'       => 'page',
    );
    register_post_type( 'agency_operation', $args );
}
add_action( 'init', 'add_agency_operation_post_type', 0 );

}*/

ВОПРОС: Откуда пошел конфликт между двумя CPT? Что я не так делаю?
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ох там и винегрет)) при чем у каждого register_post_type свои приколы, например:
- 'query_var' => 'post_type', - это во втором куске
- $rewrite - в первом нет, во втором есть
- 'exclude_from_search' => true, - вангую, что объекты недвижимости таки должны искаться
- 'capability_type' => 'page', - вангую, что тут редактора с разными ролями могут быть, импорт и тд, а значит capability свои надо генерить а не наследовать от page
- 'taxonomies'  => array( 'estate_type', 'estate_operation', 'estate_district', 'estate_building_type', 'estate_class'),
- вот этого лучше вообще не делать, этот аргумент для встроенных таксономий подходит, для кастомных - не очень. Там порядок регистрации и связки таксономий и типов записей немножко не такой, как вы думаете. Связку делайте через таксономии - регистируя их, указывайте для каких post_type.

Ну и много такого. Воспользуйтесь GenerateWP -> Post Type Generator и создайте ваши custom post types по одной и той же схеме, как положено. Таксономии можете пересоздать там же. Глядишь, и баги уйдут.

ЗЫ: А вообще если у вас в проекте их много (таксономий и типов записей), то пора переходить на новый уровень - использовать библиотеки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vardoLP
Ват ю сэй эбаут май мама?!
гляньте где подключается этот формат постов, мож отвалился. в functions.php проверьте
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы