Intereting Posts
Как я могу изменить порядок имен в администраторе? WordPress Admin – Добавить ссылку на страницу в разделе «Страницы» Кэширование браузера Создание индексов для медленных запросов Могу ли я создать каталог для моего URL-адреса, даже до того, как он перейдет от того, кто его владеет? Как определить, совместим ли плагин с несколькими компонентами? Orderby ASC изменяет DESC в WP_Query Как вставить некоторые строки файла журнала в пользовательскую страницу администратора как добавить дополнительный мета-ящик или текстовое поле в настраиваемые типы сообщений wp_category_checklist не будет отображаться для пользователей, не являющихся администраторами setup_postdata не возвращает никаких значений Создайте размер изображения, основываясь на ориентации изображения случайные сообщения не работают Отображение заказов Woocommerce для конкретного автора Измените WordPress SQL Query, чтобы извлечь из категории

Неопределенное смещение & Неопределенное свойство | Не удалось правильно настроить мои колпачки

Я установил несколько пользовательских типов сообщений, и каждый из них должен иметь свои собственные возможности, чтобы я мог управлять тем, какой пользователь может видеть, редактировать или даже удалять их.

Это мой регистрационный код для одного из них

function {namespace}_contact_cpt() { $labels = array( 'name' => 'Messages', 'singular_name' => 'Message', 'menu_name' => 'Messages', 'name_admin_bar' => 'Messages' ); $args = array( 'labels' => $labels, 'show_ui' => true, 'show_in_menu' => true, 'menu_icon' => 'dashicons-email-alt', 'public' => false, 'capabilities' => array( 'create_posts' => 'create_contact', 'read_post' => 'read_contact', 'read_private_posts' => 'read_contact', 'edit-post' => 'edit_contact', 'edit_posts' => 'edit_contact', 'edit_others_posts' => 'edit_contact', 'edit_published_posts' => 'edit_contact', 'edit_private_posts' => 'edit_contact', 'delete_post' => 'delete_contact', ), 'map_meta_cap' => true, 'hierarchical' => false, 'menu_position' => 26, 'supports' => array( 'title', 'editor', 'author' ) ); register_post_type( '{namespace}-contact', $args ); } add_action( 'init', '{namespace}_contact_cpt' ); 

Если я запишусь на бэкэнд на своих сайтах и ​​откройте CPT, мне дадут это сообщение

Примечание: Неопределенное смещение: 0 в /home/www/example.com/dev/wp-includes/capabilities.php в строке 181

Строка 181 в этом случае:

 case 'read_post': // 179 case 'read_page': // 180 $post = get_post( $args[0] ); // 181 if ( ! $post ) { // 182 $caps[] = 'do_not_allow'; // 183 break; // 184 } // 185 

При комментировании 'read_post' => 'read_contact' ошибка исчезает.

В двух других типах сообщений сообщение об ошибке относится к строке 122

 case 'edit_post': // 120 case 'edit_page': // 121 $post = get_post( $args[0] ); // 122 if ( ! $post ) { // 123 $caps[] = 'do_not_allow'; // 124 break; // 125 } // 126 

Если вы удалите map_meta_cap => true из всех CPT, эти ошибки исчезнут, но я столкнулся с новым:

Примечание. Неопределенное свойство: stdClass :: $ delete_posts в /home/www/example.com/dev/wp-admin/includes/class-wp-posts-list-table.php в строке 403

 if ( current_user_can( $post_type_obj->cap->delete_posts ) ) { // 403 if ( $this->is_trash || ! EMPTY_TRASH_DAYS ) { // 404 $actions['delete'] = __( 'Delete Permanently' ); // 405 } else { // 406 $actions['trash'] = __( 'Move to Trash' ); // 407 } // 408 } // 409 

Что я делаю не так? Как мне установить возможности, чтобы я мог действительно управлять ими в бэкэнд. Я хочу исключить некоторых пользователей для создания сообщений этих CPT, другим не должно быть позволено удалять сообщения.