Регистрация типа сообщения не добавляется в меню администратора

Несколько дней назад я начал обдумывать идею, что будут использовать пользовательские типы сообщений. Я никогда раньше не использовал CPT, и у меня возникли проблемы с базовым процессом регистрации.

Следующий регистрационный код привязан к init , и я убедился, что он работает, однако я не вижу «Слайды» в меню администратора.

* EDIT: WP_DEBUG включен, но ничего не создается. *

  register_post_type (self :: $ post_type, array ('labels' =  > array ('name' => __ ('Slides', 'bonestheme'), 'singular_name' => __ ('Slide', 'bonestheme'), 'add_new_item' => __ ('Добавить новый слайд', 'bonestheme  '),' edit_item '=> __ (' Изменить слайд ',' bonestheme '),' new_item '=> __ (' Новый слайд ',' bonestheme '),' view_item '=> __ (' Просмотреть слайд ','  bonestheme '),' search_items '=> __ (' Слайды поиска ',' bonestheme '),' not_found '=> __ (' Слайд не найден ',' bonestheme '),' not_found_in_trash '=> __ (' Слайды не найдены  in Trash ',' bonestheme ')),' capacity_type '=> array (' slide ',' slides '),' description '=>' Представляет один слайд в слайд-шоу заголовка. ','ierarchical' => false,  'menu_position' => 5, 'public' => false, 'register_meta_box_cb' => array ('SlideJS', 'createCPTMetaboxes'), 'rewrite' => false, 'show_in_admin_bar' => false, 'show_in_nav_menus' => true  , 'show_ui' => true, 'supports' => array ('title', 'thumbnail'))); удалить  _post_type_support (self :: $ post_type, 'editor');  

Удалить

  'capacity_type' =  > array ('slide', 'slides'),  

Это работает

  add_action ('init', 'slides_post_type'  ); function slides_post_type () {register_post_type ('Slides', array ('labels' => array ('name' => __ ('Slides', 'bonestheme'), 'singular_name' => __ ('Slide', '  bonestheme '),' add_new_item '=> __ (' Добавить новый слайд ',' bonestheme '),' edit_item '=> __ (' Изменить слайд ',' bonestheme '),' new_item '=> __ (' Новый слайд '  , 'bonestheme'), 'view_item' => __ ('Просмотреть слайд', 'bonestheme'), 'search_items' => __ ('Поиск слайдов', 'bonestheme'), 'not_found' => __ ('Без слайда  Найдено ',' bonestheme '),' not_found_in_trash '=> __ (' Слайды не найдены в корзине ',' bonestheme ')),' description '=>' Представляет один слайд в слайд-шоу заголовка. ','ierarchical' => false, 'menu_icon' => 'dashicons-images-alt2', 'menu_position' => 5, 'public' => true, 'register_meta_box_cb' => array ('SlideJS', 'createCPTMetaboxes'  ), 'rewrite' => array ('slug' => 'slides', 'with_front' => false), 'show_in_admin_bar' => false, 'show_in_nav_menus' => true, 'show_ui' => true, 'supports'  => array ('title', 'editor', 'author', 'thumbnail', 'отрывок', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes')));} код> 



/wp-custom-post-type-class

NB Я выпустил обновленную версию проекта в новый репозиторий PostTypes.

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

Установка

Установить с помощью Composer

Добавьте пакет в файл проекта composer.json . Посетите getcomposer.org для получения дополнительной информации.

 {"require": {"jjgrainger/wp-custom-post-type-class": "dev-master"}} 

Установить вручную

Загрузите и включите файл класса в свои темы functions.php следующим образом:

include_once('CPT.php');

и все готово!

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

Чтобы создать тип сообщения, просто создайте новый объект

 $ books = new CPT ('book'); 

Первый параметр — это название типа сообщения и является обязательным. в идеале имя типа сообщения должно быть полностью в нижнем регистре, а слова разделены знаком подчеркивания _ .

Чтобы быть точным в отношении имен других типов сообщений, вы можете передать ассоциативный массив:

post_type_name — название типа сообщения (единственное число, строчные буквы, подчеркивания)

единственное число — метка единственного числа типа сообщения (Книга, Человек)

множественное число — множественное число типа сообщения (Книги, Люди)

slug — ярлык постоянной ссылки для типа сообщения (множественное число, строчные буквы, дефисы)

вы передаете эти имена через первый параметр в виде массива, например :

 $ people = new CPT (array ('post_type_name' => 'person', 'singular' => 'Person', 'plural' => 'People',  'slug' => 'people')); 

Необязательный второй параметр — это аргументы для post_type. доступные параметры см. в кодексе WordPress.

Класс использует значения по умолчанию WordPress, где это возможно.

Чтобы переопределить параметры по умолчанию, просто передайте массив опций как второй параметр. Не все параметры должны передаваться, только те, которые вы хотите добавить/переопределить следующим образом:

 $ books = new CPT ('book', array ('supports' =>  array ('title', 'editor', 'thumbnail', 'comments'))); 

Все доступные параметры см. в кодексе WordPress.

Существующие типы сообщений

Чтобы работать с существующими типами сообщений, просто передайте имя типа сообщения в конструктор класса

 $ blog = new CPT  ('post'); 

Добавление таксономий

Вы можете легко добавлять таксономии с помощью метода register_taxonomy () вот так:

 $ books-> register_taxonomy ('genres'); 

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

 $ books-> register_taxonomy (array ('  taxonomy_name '=>' genre ',' singular '=>' Genre ',' plural '=>' Genres ',' slug '=>' genre ')); 

Опять же параметры могут быть переданы необязательно в виде массива. все возможные варианты см. в кодексе WordPress.

Существующие таксономии

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

Экран редактирования администратора

Фильтры

Когда вы регистрируете таксономию, она автоматически добавляется на экран редактирования администратора в виде фильтра и столбца.

Вы можете определите, какие фильтры вы хотите отображать, используя метод filters () :

 $ books-> filters (array ('genre')  ); 

Передавая массив имен таксономий, вы можете выбрать отображаемые фильтры и порядок, в котором они появляются. Если вы передадите пустой массив, никакие раскрывающиеся фильтры не появятся в экран редактирования администратора.

Столбцы

Класс имеет ряд методов, которые помогут вам изменить столбцы администратора. Таксономии, зарегистрированные в этом классе, автоматически добавляются в админку редактировать экран в виде столбцов.

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

В этом классе нет методов для добавления настраиваемых полей, поскольку расширенные настраиваемые поля (ACF) намного круче, чем все, что может сделать этот класс!

Вы можете определите, какие столбцы вы хотите отображать на экране редактирования администратора с помощью метода columns () , передав такой массив:

 $ books  -> columns (array ('cb' => '', 'title' => __ ('Title'), 'genre' => __ ('Genres'), 'price')  => __ ('Цена'), 'rating' => __ ('Рейтинг'), 'date' => __ ('Date'))); 

Ключ определяет имя столбца, значение — это метка, отображаемая для этого столбца. Следующие имена столбцов автоматически заполняются классом:

  • любая таксономия, зарегистрированная через объект
  • cb флажок для массового редактирования
  • title заголовок сообщения со ссылкой для редактирования
  • author автор сообщения
  • post_id идентификатор сообщения
  • icon миниатюра сообщения

Заполнение столбцов

Вам нужно будет создать функцию для заполнения столбца, который не является заполняется автоматически .

Это делается с помощью метода populate_column () следующим образом:

 $ books-> populate_column ('column_name', function ($ column, $ post) {//здесь ваш код…}); 

, чтобы мы могли заполнить столбец с ценами вот так:

 $ books-> populate_column ('price', function ($ column, $ post) {echo "£". get_field ('price');// Функция ACF get_field ()}); 

Метод передаст две переменные в удовольствие ction:

  • $ column — имя столбца (не метка)
  • $ post — текущий объект сообщения.

Они передаются, чтобы помочь вам правильно заполнить столбец.

Сортировка столбцов

Если имеет смысл, что столбец должен быть сортированным по возрастанию/убыванию, вы можете определить настраиваемые сортируемые столбцы следующим образом:

 $ books-> sortable (array ('  column_name '=> array (' meta_key ', true))); 

true/false используется для определения того, является ли мета-значение строка или целое число, причина в том, что если числа упорядочены как строка, числа, такие как:

  1, 3, 5, 11, 14, 21, 33  

Будет иметь следующий порядок:

  1, 11, 14, 21, 3, 33, 5  

При добавлении значения параметра true значения будут отсортированы как целые числа, если false или undefined, класс будет сортировать столбцы как строку.

, поэтому для нашего примера с книгами вы будете использовать :

 $ books-> sortable (array ('p  рис '=> array (' price ', true),' rating '=> array (' rating ', true))); 

Значки меню

Dashicons

В WordPress 3. 8 поставляется с иконками шрифта, которые вы можете использовать с вашими произвольными типами сообщений. Чтобы использовать, просто передайте имя значка через метод menu_icon () следующим образом:

 $ books-> menu_icon ("dashicons-book-  alt "); 

Для получения полного списка используемых значков и имен классов посетите https://developer.wordpress.org/resource/dashicons/

Перевод

Класс настроен для перевода, но если вам нужно установить собственный текстовый домен для работы с вашей темой или плагином, используйте set_textdomain () метод:

 $ books-> set_textdomain ('your-textdomain'); 

Сбросить правила перезаписи

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

 $ books-> flush (); 

Примечания

  • У класса нет методов для создания настраиваемых полей для типов сообщений используйте Расширенные настраиваемые поля.
  • Пример книг, используемый в README.md, можно найти в файле books-post-typ e.php
  • Лицензия MIT License
  • Поддерживается в соответствии с Руководством по семантическому управлению версиями

Автор

Джо Грейнджер

  • http://jjgrainger.co.uk
  • http: //twitter.com/jjgrainger
Оцените статью
clickpad.ru
Добавить комментарий