WordPress делает некоторые довольно удивительные вещи из коробки.Он обрабатывает управления контентом, а также любое другое решение с открытым исходным кодом там — и лучше, чем многие коммерческие решения.Один из лучших атрибутов WordPress является его простота в использовании.Это легко, потому что там не значительное количество наворотов с бесконечными колокола и свистки, что круче кривая обучения .
С другой стороны, некоторые могли бы найти WordPress немного … ну, свет.Это делает много, но не достаточно.Если вы окажетесь взлома WordPress делать вещи, которые вы хотите это будет делать, то высоки шансы, что эта статья для вас .
WordPress может быть легко расширена, чтобы соответствовать требованиям архитектуры пользовательских данных.Мы собираемся исследовать процесс регистрации новых типов данных в полностью совместимой образом .
Если вы хотите следовать вдоль дома, мы обеспечили полный исходный code 1 (TXT, 5,0 Кб) .
Таможенный пост Types
WordPress дает вам очень простой и прямой способ расширить стандартные два типа данных (сообщений) и страницы в бесконечный массив для пользовательских нужд.Цифровое агентство или фрилансер потребуется “проект” тип записи.Центр потребуется “Местоположение” тип записи .
Быстрый точка.Спиннинг от пользовательских типов должность отличная идея для контента, который является по сути отличается либо сообщений или страницы.Там может быть случай, когда вы хотели бы пресс-релизы, чтобы жить в собственном типа.Но чаще, чем не, пресс-релизы бы сообщение и классифицируются как пресс-релизе.Или вы можете создать тип пост для целевых страниц.Это может очень хорошо относятся в качестве пользовательского типа, но это, вероятно, также может существовать как 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
, если у вас тип пост, который просто управляемый данных.Например, вам может потребоваться, события прикреплять тип, который имеет повторяющееся атрибут.Когда вы сохраняете событие, новых сообщений разного типа будет создан, чтобы обрабатывать каждый экземпляр события.Вы хотели бы интерфейс, чтобы показать только основные события прикреплять тип, а не мета данных возникновения мероприятия .
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__9 __20 | | 4__9 . Полный список Dashicons является available 5 как удобный ресурс.Умолчанию значок Чертежная для сообщений .
Capability_type
Этот атрибут быстро попадает в некоторых передовых концепций сегментации пользователя подражания.По сути, назначение post
к этому атрибут генерирует структуру возможностей, что именно мимика, как доступ к записям работ.Используя это значение, абоненты не смогут получить доступ к этому типу записи, в то время как авторов, редакторов и администраторов бы.Использование page
здесь будет ограничивать доступ к справедливым редакторов и администраторов.Вы можете определить более зернистую структуру, используя capability_type
47 ~ и | атрибуты в списке аргументов.Обратите внимание, что мы не использовали capabilities
атрибут в этом примере, потому что мы явно не определяя структуру пользовательских возможностей, которые будут использоваться с этой записи типа.Это передовые концепции и один для совершенно другой статьи .
Hierarchical
Это в основном разница между сообщение и Page.При установке на 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 для типа сообщению.В этом случае, наш адрес будет 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
и оказывает со структурой Постоянная ссылка (при установленной).Вы можете использовать строку, а не переменной, и контролировать ключевую часть переменной запроса со значением струны .
Расширение Начать типа с таксономии (или два)
Из коробки, 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' ...
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров