Продление WordPress С типы контента

WordPress делает некоторые довольно удивительные вещи из коробки.Он обрабатывает управления контентом, а также любое другое решение с открытым исходным кодом Out There — и лучше, чем у многих коммерческих решений.Один из лучших атрибутов WordPress является его простота в использовании.Это легко, потому что там не значительное количество наворотов с бесконечными колокола и свистки, что круче кривая обучения .

С другой стороны, некоторые из них могут найти WordPress немного … ну, свет.Он делает много, но не достаточно.Если вы окажетесь взлома WordPress делать то, что вы хотите это будет делать, то велика вероятность того, что эта статья для вас .

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

Если вы хотите следовать вдоль дома, мы предоставили полный исходный code 1 (TXT, 5,0 KB) .

Таможенный пост Types

WordPress дает вам очень простой и понятный способ расширить стандартные два типа данных (записи и страницы) в бесконечный массив для пользовательских нужд.Цифровое агентство или фрилансер потребуется “Проект” тип записи.Центр потребуется “Location” тип записи .

Быстрый точкой.Спиннинг с пользовательских типов пост отличная идея для содержания, которое по своей сути отличается от либо сообщений или страниц.Там может быть случай, когда вы хотели бы пресс-релизы, чтобы жить в собственном типа.Но чаще всего это не так, пресс-релизы бы сообщение и классифицируется как пресс-релизе.Или вы можете создать тип должностей на целевые страницы.Это может очень хорошо относятся в качестве пользовательского типа, но это, скорее всего также может существовать как Page .

Ради этой статье, мы собираемся следовать реального сценария создания Тип Сообщение проект для хранения образцы работ.Мы зарегистрируем тип пост, добавить мета-данные к нему, включают в себя дополнительную информацию в разделе администрирования WordPress “, а также создавать пользовательские таксономии в дополнение к .

Регистрация должность Type

Для начала, нам нужно некоторый код, чтобы зарегистрировать тип пост.Мы собираемся пойти с объектно-ориентированного подхода, потому что мы будем спиннинг с этому типу позже с какой-то дополнительной функциональности, что бы быть сделано намного более эффективно с объектной моделью.Для начала, давайте создадим функцию, которая регистрирует Тип Сообщение .

function create_post_type() {
  $labels = array(
    'name'               => 'Projects',
    'singular_name'      => 'Project',
    'menu_name'          => 'Projects',
    'name_admin_bar'     => 'Project',
    'add_new'            => 'Add New',
    'add_new_item'       => 'Add New Project',
    'new_item'           => 'New Project',
    'edit_item'          => 'Edit Project',
    'view_item'          => 'View Project',
    'all_items'          => 'All Projects',
    'search_items'       => 'Search Projects',
    'parent_item_colon'  => 'Parent Project',
    'not_found'          => 'No Projects Found',
    'not_found_in_trash' => 'No Projects Found in Trash'
  );

  $args = array(
    'labels'              => $labels,
    'public'              => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'show_in_nav_menus'   => true,
    'show_in_menu'        => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => 'dashicons-admin-appearance',
    'capability_type'     => 'post',
    'hierarchical'        => false,
    'supports'            => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
    'has_archive'         => true,
    'rewrite'             => array( 'slug' => 'projects' ),
    'query_var'           => true
  );

  register_post_type( 'sm_project', $args );
}

Не так много таинственной.Мы призываем к create_post_type функцию, которая регистрирует наш тип пост.Мы даем Введите несколько меток для серверной идентификации и предоставления ему список спецификаций в том, что она может сделать.Для получения полного списка ссылок для каждой из этих переменных, принять смотреть на WordPress Codex 2 , но мы попали на нескольких ключевых элементов .

Labels

Для краткости мы создали labels массив и просто передал его в arguments массиве.WordPress позволяет идентифицировать убил этикеток для единственное, множественное и других целей .

Public

Эта настройка родительского сортов для несколько других параметров, которые появляются позже в списке.Значение по умолчанию для общественного атрибута false.Значение public передается на следующие другие атрибуты, когда они явно не определены: exclude_from_search, publicly_queryable, show_in_nav_menus и show_ui .

Exclude_from_search

Сидит здесь умолчанию opposite в public атрибута.Если ваш тип пост public, то он будет включен в результатах поиска веб-сайта.Обратите внимание, что это не имеет никакого последствия для SEO и только ограничивает или позволяет осуществлять поиск на основе родного протокола обыска WordPress.Там это шанс, что вы хотели бы Тип Сообщение должны быть открытыми, но не появляются в этих результатов поиска.Если это так, установите этот атрибут для true .

Publicly_queryable

Этот атрибут предназначен исключительно для фронтальных запросов и не имеет никаких реальных фоновых последствия.Значение по умолчанию совпадает с public атрибута.Обратите внимание, что, когда он установлен в false, вы не сможете просмотреть или прослушать тип пост в передней части.Например, если вы хотите создать тип поста, который заполняет страницу персонал со списком каждого фамилия, должность и био, но не хотите, чтобы они имеют свой собственный URL на веб-сайте, то вы установите бы publicly_queryable до false .

Show_ui

Большую часть времени, вы хотите установить show_ui к true.Значение по умолчанию тянет от public атрибута, но может быть изменено.Когда он установлен в false, то элемент пользовательского интерфейса на экране управления WordPress “не будет доступна для вас.Практическая причина, почему вы хотите этот набор к false, если у вас есть Тип Сообщение которые просто данные управления.Например, вам может потребоваться, События в темах тип, который имеет повторяющуюся атрибут.Когда вы сохраняете событие, новых сообщений другого типа будет создан для обработки каждого появление событий.Вы хотели бы UI, чтобы показать только основные события в темах типа и не мета данных, касающихся случаев мероприятия .

Show_in_nav_menus

Довольно просто и понятно.Если вы не хотите, чтобы это тип записи появятся в функциональности меню по умолчанию WordPress “, установите на false.Он принимает значение public по умолчанию .

Show_in_menu

Вы можете изменить положение типа по месту службы в задней части.При установке на true, по умолчанию устанавливается тип пост в меню верхнего уровня (на том же иерархическом уровне, сообщений и страниц).Если false, он не будет отображаться на всех.Вы можете использовать здесь явно гнездом Тип Сообщение в подменю верхнего уровня в строковое значение.Тип строки, которую вы бы обеспечить составляет tools.php “. Инструменты”, в результате чего эта Тип Сообщение виде вложенного элемента при проистекают его значения по умолчанию изshow_ui.Обратите внимание, что show_ui должен быть установлен в true для того, чтобы иметь возможность контролировать этот атрибут .

Show_in_admin_bar

Довольно очевидно.Если вы хотите элементы пользовательского интерфейса добавлен к администрации бар WordPress “, установите на true .

Menu_position

Значение по умолчанию null разместит меню (на верхнем уровне, и если они не отменены с помощью show_in_menu) ниже “Комментарии” в задней части.Вы можете управлять этим дальше, указав целое значение, соответствующее размещения меню по умолчанию WordPress.Значение 5 разместит Тип Сообщение под “сообщений”, 10 рамках проекта “СМИ”, 15 под “Ссылки”, и 20 под Для получения полного списка значений, ПроверитьWordPress Codex 3 .

Menu_icon

Вы можете передать URL по этому признаку, но вы также можете просто использовать имя иконы из Dashicons для быстрого решения.Поставка атрибут dashicons-admin-appearance даст вам краска brush 4 . Полный список Dashicons является available 5 как удобный ресурс.По умолчанию значок Чертежная используется для сообщений .

Capability_type

Этот атрибут быстро попадает в некоторых передовых концепций Сегментирование пользователем для подражания.По сути, назначение post по этому признаку генерирует структуру возможностей, что именно имитирует, как доступ к должностям работ.Используя это значение, абоненты не смогут получить доступ к этому типу, в то время как авторами, редакторами и администраторов бы.Использование page, будет ограничивать доступ к справедливым редакторов и администраторов.Вы можете определить более зернистую структуру, используя capability_type и capabilities атрибуты в списке аргументов.Обратите внимание, что мы не использовали capabilities атрибут в этом примере, потому что мы явно не определяя структуру пользовательских возможностей, которые будут использоваться с этой почтой типа.Это передовые концепции и один для совершенно другой статьи .

Hierarchical

Это в основном разница между сообщение и страницы.При установке на true, родитель пост может быть идентифицирован на каждого поста основе (в основном, страницы).Когда false, он ведет себя как сообщение .

Supports

Целая куча функциональности по умолчанию прилагается к каждому новому типу записи.Этот массив сообщает WordPress, который один из тех, включать по умолчанию.Там может быть случай, когда вы не хотите, чтобы редактор на ваш тип месту службы.Удаление, что из массива приведет к удалению окно Редактор на экране Редактирование записи.Приемлемые элементы для массива включаютследующее:

  • title
  • editor
  • author
  • thumbnail
  • excerpt
  • trackbacks
  • custom-fields
  • comments
  • revisions
  • page-attributes
  • post-formats

Has_archive

Если этот параметр установлен в true, WordPress создает иерархическую структуру типа после.Таким образом, доступ к /projects/ даст нам стандарт archive.php представление данных.Вы можете шаблона из вариант archive.php для этого конкретного архива, создавая новый файл в вашей теме системе под названием archive-sm_project.php.Вы можете контролировать поведение по умолчанию на более детальном уровне, крутя его от вашего первичного archive.php .

Rewrite

rewrite опция позволяет сформировать структуру URL для типа пост.В этом случае, наша URL будет http://www.example.com/projects/{slug}/, где слаг часть присвоенный каждой должности при его создании (как правило, на основе названия должности).Вторая переменная может быть назначен внутри rewrite массиве.Если вы добавляете with_front => false (по умолчанию используется true), он не будет использовать выявленные переднюю половину URL, который устанавливается в “Настройки” → “. Постоянные ссылки”, например, если ваша группа по умолчанию WordPress структура Постоянная ссылка является/blog/%postname%/, то ваш тип таможенный пост будет автоматически /blog/projects/%postname%/.Это не хороший результат, поэтому установите with_front к false .

Query_var

Этот атрибут управляет, где вы можете использовать переменную PHP-запроса для получения Тип Сообщение.По умолчанию составляет true и оказывает со структурой Постоянная ссылка (при SET).Вы можете использовать строку вместо переменной и контролировать ключевую часть переменной запроса со значением струны .

Продление пост типа с таксономии (или два)

Из коробки, WordPress Сообщения должны категорий и тегов, присоединенные к ним, которые позволяют надлежащим образом разместить содержимое в этих ведрах.По умолчанию, новые типы разместить не имеют каких-либо таксономии, присоединенные к ним.Вы не можете классифицировать или маркировать свой тип поста, но если вы делаете, вы должны зарегистрироваться некоторые новые.Есть два варианта таксономии, тот, который ведет себя как категорий (контрольный список справа от должности) и один, как теги, которые не имеют иерархическую структуру.Они ведут себя на заднем конце в значительной степени так же, (только заметной разницы в том, что категории могут иметь детей, в то время как метки не может), но, как они представлены на экране управления меняется довольно дико.Мы зарегистрируем два таксономии, чтобы дать нам один из каждого типа .

function create_taxonomies() {

// Add a taxonomy like categories
$labels = array(
'name' => 'Types',
'singular_name' => 'Type',
'search_items' => 'Search Types',
'all_items' => 'All Types',
'parent_item' => 'Parent Type',
'parent_item_colon' => 'Parent Type:',
'edit_item' => 'Edit Type',
'update_item' => 'Update Type',
'add_new_item' => 'Add New Type',
'new_item_name' => 'New Type Name',
'menu_name' => 'Types',
);

$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'type' ),
);

register_taxonomy('sm_project_type',array('sm_project'),$args);

// Add a taxonomy like tags
$labels = array(
'name' => 'Attributes',
'singular_name' => 'Attribute',
'search_items' => 'Attributes',
'popular_items' => 'Popular Attributes',
'all_items' => 'All Attributes',
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => 'Edit Attribute',
'update_item' => 'Update Attribute',
'add_new_item' => 'Add New Attribute',
'new_item_name' => 'New Attribute Name',
'separate_items_with_commas' => 'Separate Attributes with commas',
'add_or_remove_items' => 'Add or remove Attributes',
'choose_from_most_used' => 'Choose from most used Attributes',
'not_found' => 'No Attributes found',
'menu_name' => 'Attributes',
);

$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' ...

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.