Запис #7 "register_post_type"

Додано: 2015-10-21 13:30:26 'admin

Функція створює нові типи записів. Ця функція уявляє собою потужний інструмент для розширення можливостей вордпрес. За допомогою цієї функції можна створити нові типи записів, які будуть фундаментально відрізнятися від типів записів які є стандартними для вордпрес. Це, власне, записи та теги. Нові типи записів можуть мати власні постійні посилання та таксономії, що може забезпечити досить потужну seo оптимізацію.

Розглянемо синтаксис даної функції а також її параметри та аргументи:

register_post_type( $post_type, $args );

 Функція приймає лишень два параметри:

- $post_type. Строка. Обов'язково. Визначає назву майбутнього типу записів.
- $args. Масив. Обов'язково. Визначає масив аргументів для майбутнього типу записів. Ці аргументи і визначають як буде себе поводити запис даного типу, його основні характеристики та параметри.

 Аргументи параметру $args:

- label. Строка. Ім'я типу запису.
- labels. Масив. Масив що містить в собі маркери назв для  типу запису.
Елементи масиву labels:
- - name. Основна назва типу запису.
- - singular_name. Назва типу запису для однієї одиниці.
- - menu_name. Назва меню. Якщо не вказано використовує назву типу.
- - name_admin_bar. Назва використовується для випадаючого меню "додати новий". Якщо не вказано використовує параметр singular_name.
- - all_items. Маркер для назви "всі позиції". Якщо не вказано використовує параметр name.
- - add_new. Маркер для назви "додати новий".
- - add_new_item. Маркер для нового запису типу.
- - edit_item. Маркер для назви "редагування позиції". 
- - new_item. Текст для нового запису.
- - view_item. Текст для перегляду запису.
- - search_items. Текст під час пошуку запису.
- - not_found. Текст коли нічого не знайдено.
- - not_found_in_trash.  Текст коли нічого не знайдено у корзині.
- - parent_item_colon. Текст для батьківських типів із знаком ":" в кінці.
description. Строка. Опис типу.
public. Булеве значення. Аргумент який визначає чи показувати користувацький інтерфейс в адмін панелі для даного типу.
exclude_from_search. Булеве значення. Аргумент який визначає чи виключати записи даного типу із пошуку.
publicly_queryable. Булеве значення. Аргумент який визначає чи дозволяти використовувати запити цього типу в шаблонах користувача.
show_ui. Булеве значення. Аргумент який визначає чи показувати управління цим типом записів в адмін панель
show_in_nav_menus. Булеве значення. Дозволяє виключити вибір цього типу записів навігаційне меню
show_in_menu. Булеве значення або строка. Визначає чи показувати тип записів в меню адміністратора. Якщо замість логічного значення використовується строка, сторінку буде показано на першому рівні. При цьому попередні сторінки першого рівня будуть зміщені на один рівень вниз.
show_in_admin_bar. Булеве значення.
menu_position. Число. Визначає місце розміщення назви типу в адмін панелі. Чим вище число тим нижче буде знаходитись тип у списку.
menu_icon. Строка. Визначає назву іконки, яка буде знаходитись біля назви типу в адмін панелі. Назва береться із набору іконок.
capability_type. Строка або масив. Назва маркера для встановлення групи прав доступа відносно цього типу записів. Може передаватись масив. Тоді в масиві вказується назва для одного та множинного числа.
capabilities. Масив. Масив який визначає права доступу до типу записів. Доступні сім правил:
- - edit_post, read_post, delete_post - 3 правила які дають доступ до основних трьох правил
- - edit_posts - контролює можливість редагування об'єктів даного типу
- - edit_other_posts - контролює можливість редагування об'єктів цілого типу записів які належать іншому користувачу.
- - publish_posts - контролює можливість публікації об'єктів цього типу
- - read_private_posts - контролює можливість читання приватних об'єктів цього типу
map_meta_cap. Булеве значення. 
hierarchical. Булеве значення. Вмикає ієрархічну структуру типу.
supports. Булеве значення або масив. Додаткові поля на сторінці створення та редагування цього типу записів. Мітки для виклику функції add_post_type_support():
- - title - блок заголовку
- - editor - блок редактор
- - author - блок вибору автора
- - thumbnail - блок вибору мініатюри
- - expert -  блок введення цитати
- - trackbacks - блок повідомлень
- - custom-fields - блок встановлення земельних полів
- - comments - блок коментарів
- - revisions - блок ревізії не відображається поки нема ревізії
- - page-attributes - блок атрибутів постійних сторінок
- - post-formats - блок форматів запису
register_meta_box_cb. Строка. Назва функції. Callback функція, яка спрацьовує при встановленні мета блоків для сторінки створення/редагування даного типу записів. В середині функції потрібно використовувати remove_meta_box() та add_meta_box() функції відповідно.
taxonomies. Масив. Масив із зареєстрованими раніше таксономіями, які будуть пов'язані із цим типом. Таксономії реєструються функцією register_taxonomy()
has_archive. Булеве значення або строка. Включає підтримку сторінок архіву для даного типу записів. 
permalink_epmask. Строка. Використовується для заміни маскою кінцевих назв постійних УРЛ.
rewrite. Булеве значення або масив. Вмикає людино-зрозумілі УРЛ для даного типу записів. В масиві можна вказати додаткові параметри для УРЛ:
- - slug. Строка. Префік в адресній строці (Наприклад, /префікс/мітка_запису)
- - with_front. Булеве значення. Загальний префікс для адресної строки. 
- - feeds. Булеве значення. Вмикає підтримку RSS для даного типу.
- - pages. Булеве значення. Вмикає пагінацію архіву запсів цього типу.
query_var. Булеве значення або строка. При значенні false вимикає можливість запитів до цього типу. Довільна строка змінює адресу для запиту до цього типу.
can_export. Булеве значення. Вмикає можливість експорту цього типу.
_builtin. Булеве значення. При значенні true таксономія переходить у внутрішні таксономії WordPress. Для розробників.
_edit_link. Булеве значення. посилання на редагування цього типу. Для розробника.

Приклад використання функції:


add_action( 'init', 'codex_items_init' );
/**
 * Приклад реєстрації нового типу записів для товару.
 */
function codex_items_init() {
    //Маркери для позначення назв нового типу
	$labels = array(
		'name'               => "Товар",
		'singular_name'      => "Товар",
		'menu_name'          => "Товар",
		'name_admin_bar'     => "Товар",
		'add_new'            => "Додати товар",
		'add_new_item'       => "Новий товар",
		'new_item'           => "Новий товар",
		'edit_item'          => "Редагувати товар",
		'view_item'          => "Переглянути товар",
		'all_items'          => "Увесь товар",
		'search_items'       => "Пошук товару",
		'parent_item_colon'  => "Батьківський рівень для товару",
		'not_found'          => "Товар не знайдено",
		'not_found_in_trash' => "В кошику товар не знайдено"
	);
    
    //Аргументи, які визначають новий тип.
	$args = array(
		'labels'             => $labels,  //Тут масив із мітками
        'description'        => __( 'Description.', 'your-plugin-textdomain' ),
		'public'             => true, //Доступний в консолі
		'publicly_queryable' => true, //Є доступ із запитів та шаблонів
		'show_ui'            => true, //Відкрите редагування в консолі
		'show_in_menu'       => true, //Відображається як пункт в меню
		'query_var'          => true, //Запити ввімкнено
		'rewrite'            => array( 'slug' => 'items' ), //префікс для посилань доступу
		'capability_type'    => 'post', //Права доступу як у звичайного типу записів
		'has_archive'        => true, //Включення сторінок архіву
		'hierarchical'       => false, //Не є ієрархічного типу
		'menu_position'      => null, //В меню буде у самому низу
		'supports'           => array( 
                                    'title', 
                                    'editor', 
                                    'author', 
                                    'thumbnail', 
                                    'excerpt', 
                                    'comments' 
                                ), //Доступні блоки для редагування
        /*'taxonomies'         => array( 'jam' )*/ //Зв'язані таксономії
	);

	register_post_type( 'items', $args );
}

Після додавання даного коду в файл functions.php стандартного шаблону 2015:

 Офіційний опис функції:

register_post_type

Коментарі: