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' ...
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров