Intereting Posts
Как импортировать большое количество сообщений в одном домене в другой домен? Что может помешать изменению содержимого iframe с помощью href? Как определить, была ли произведена ревизия woocommerce или wordpress? есть ли какие-либо недостатки для увеличения количества последних элементов в фиде Поиск системных диаграмм WordPress Вход для входа на сайт и ограничение по страницам Постоянная ссылка установлена ​​на /% postname% /, но все еще есть ссылки, индексированные в форме? P = x Enqueue custom jQuery UI theme для переопределения темы Google CDN запрос и разбиение на страницы нескольких типов сообщений Как удалить файл, загруженный Plupload Добавить фильтр, если он не вызван под конкретную функцию Скрыть номер уведомления уведомления и кнопки в wp-сервере QTranslate для пользовательского типа сообщения wp_enqueue_scripts в классе плагина Форум для WordPress – Супер путать!

Пользовательский тип сообщения не работает

Я только что создал бета-среду для тестирования моего нового сайта WordPress. Я не переносил базу данных; Я снова сделал свою собственную установку и портировал мою тему (это простая тема) для моего нового экземпляра. Все работает отлично, за исключением одного настраиваемого типа сообщений, который я использую.

Вот соответствующий код из functions.php :

 function createCommunityPostType() { $args = array( 'public' => true, 'label' => 'Community', 'capability_type' => 'community', 'capabilities' => array( 'edit_post' => 'edit_community', 'edit_private_posts' => 'edit_private_communities', 'edit_published_posts' => 'edit_published_communities', 'edit_posts' => 'edit_communities', 'edit_others_posts' => 'edit_others_communities', 'delete_post' => 'delete_community', 'delete_posts' => 'delete_communities', 'delete_others_posts' => 'delete_others_communities', 'delete_private_posts' => 'delete_private_communities', 'delete_published_posts' => 'delete_published_communities', 'read_private_posts' => 'read_private_communities', 'read_post' => 'read_community', 'publish_posts' => 'publish_communities' ), 'map_meta_cap' => true, 'has_archive' => true ); register_post_type('community', $args ); } add_action('init', 'createCommunityPostType'); 

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

Я знаю, что код выполняется, потому что я добавил некоторые простые операторы print до и после вызова register_post_type . Операторы печати были частью ответа HTML.

Я не могу понять, почему этот тип сообщения не работает. У меня есть другие методы в functions.php для обработки таблиц стилей, скриптов, некоторых переопределений для меню и боковых панелей и т. Д. Все работают нормально.

Изменить :

Я изменил использование возможностей по умолчанию, и параметр меню все еще не отображается:

 function createCommunityPostType() { $args = array( 'public' => true, 'label' => 'Community', 'capability_type' => 'community', 'capabilities' => array( 'edit_post' => 'edit_posts', 'edit_private_posts' => 'edit_posts', 'edit_published_posts' => 'edit_posts', 'edit_posts' => 'edit_posts', 'edit_others_posts' => 'edit_posts', 'delete_post' => 'delete_posts', 'delete_posts' => 'delete_posts', 'delete_others_posts' => 'delete_posts', 'delete_private_posts' => 'delete_posts', 'delete_published_posts' => 'delete_posts', 'read_private_posts' => 'read', 'read_post' => 'read', 'publish_posts' => 'publish_posts' ), 'map_meta_cap' => true, 'has_archive' => true ); register_post_type('community', $args ); } add_action('init', 'createCommunityPostType'); 

Однако я переключился на использование некоторого очень простого кода образца из WordPress и появился тип пользовательского сообщения (CPT):

 function codex_custom_init() { $args = array( 'public' => true, 'label' => 'Books' ); register_post_type( 'book', $args ); } add_action( 'init', 'codex_custom_init' ); 

Одна из проблем заключается в том, что параметр 'capability_type' 'community' не соответствует вашим значениям массива 'capabilities' .

Из Кодекса :

capability_type

(строка или массив) (необязательно) Строка, используемая для создания возможностей чтения, редактирования и удаления. Может быть передан как массив, позволяющий использовать альтернативные множественные числа при использовании этого аргумента в качестве основы для создания возможностей, например array ('story', 'stories'). По умолчанию свойство_имости используется как основа для создания возможностей. Кажется, что map_meta_cap необходимо установить в true, чтобы эта работа работала.

Тип вашей возможности:

 'capability_type' => 'community' 

Обратите внимание на свой массив 'capabilities' :

 'capabilities' => array( 'edit_post' => 'edit_community', 'edit_private_posts' => 'edit_private_communities', 'edit_published_posts' => 'edit_published_communities', 'edit_posts' => 'edit_communities', 'edit_others_posts' => 'edit_others_communities', 'delete_post' => 'delete_community', 'delete_posts' => 'delete_communities', 'delete_others_posts' => 'delete_others_communities', 'delete_private_posts' => 'delete_private_communities', 'delete_published_posts' => 'delete_published_communities', 'read_private_posts' => 'read_private_communities', 'read_post' => 'read_community', 'publish_posts' => 'publish_communities' ), 

Тип вашей возможности является уникальным , и ваши построенные возможности множественны .

Попробуйте изменить тип возможности:

 'capability_type' => array( 'community', 'communities' ) 

Кроме того, если вы определяете 'capability_type' , вам не нужно явно определять каждую функцию. Итак, попробуйте полностью исключить аргумент 'capabilities' .

Если ваш CPT не появится после этого, то проблема, скорее всего, связана с конфигурацией вашего плагина членов:

  1. Убедитесь, что вы правильно определили свои пользовательские возможности
  2. Убедитесь, что у текущего пользователя есть возможности, указанные в CPT.