Призначені для користувача пости wordpress повне керівництво
За ці роки я успішно створив велику кількість кастомних веб-додатків на новітніх версіях WordPress, в яких по повній використовувалися кастомниє типи постів. Прикладом може послужити сайт theme marketplace мого плагіна для WordPress ProfilePress.
Якщо докладніше придивитися до магазину тим за посиланням вище, можна помітити, що на ньому використовується кастомними система посторінковою навігації на основі URL посилань для наступної і попередньої сторінок. Тобто можна створити свою систему посторінковою навігації, яка відмінно буде працювати з запитами постів призначених для користувача типів.
Ну вистачить довгих промов, перейдемо до основної мети даного уроку - вивчення всіх тонкощів призначених для користувача типів в WordPress.
Сподіваюся, ми вирішимо багато проблем, з якими я особисто зіткнувся при роботі з кастомними типами посад, а також розглянемо інші круті можливості.
Визначення користувацького типу постів
Прикладом типу постів служить тип post (група постів з блогу), page (група сторінок), attachment (група завантажуються медіа файлів), а також revision (група редакцій постів). Всі ці типи рідні або вбудовані в WordPress. Знаючи, що таке тип поста, можна створити і зареєструвати новий тип, який буде ставитися до кастомними типам постів.
Якщо ви створюєте сайт для компанії або бізнесу на WordPress, то типами посад можуть бути Portfolio, Testimonials і Products. Тепер, коли ми розібралися з концепцією призначених для користувача типів постів, давайте навчимося їх створювати.
Як створити для користувача тип постів
Створити користувацький тип постів досить просто. Спершу, необхідно зареєструвати тип за допомогою функції register_post_type (), потім помістити його в функцію і прикріпити все це до екшену init:
У коді вище можна помітити, що другий параметр функції register_post_type () приймає масив з декількох обов'язкових аргументів, які потрібні для створення призначеного для користувача типу поста. Створений тип Portfolio можна подивитися в панелі адміністратора.

Необхідно також сказати, що в функції register_post_type () другий аргумент необов'язковий. Призначений для користувача тип постів можна створити і по-іншому:
Множинне описову назву типу. Наприклад, якщо створити тип movie, то він повинен називатися Movies. За замовчуванням коштує $ post_type - перший параметр у функції register_post_type ().
Масив лейблів для типу постів. Кожна текстова рядок відображається на певній сторінці панелі адміністратора. Якщо плагін створюється для публічного користування, перевірте, щоб рядки були перекладними.
name: Множинна форма назви типу постів.
singular_name: Форма назв типів постів в однині.
add_new: Пункт меню для додавання нового поста.
add_new_item: При створенні нового посту відображається заголовок.
edit_item: Тема відображається при редагуванні посту.
new_item: Відображається в меню улюблених в шапці панелі адміністратора.
view_item: Відображається разом з посиланням на екрані редагування поста.
search_items: Текст кнопки панелі пошуку на екрані редагування поста.
not_found: Текст відображається, коли не знайдено жодного поста в пошуку через панель адміністратора.
not_found_in_trash: Текст відображається, коли в кошику немає постів.
Повний список лейблів і їх описів можна знайти за посиланням.
Description
Короткий опис типу поста. Я не знайшов, де в WordPress можна це задіяти.
Залежно від Булева значення воно автоматично вирішить, які повинні бути аргументи, якщо вони не задані. Якщо ви хочете контролювати публічні аргументи, можна задати три аргументи:
show_ui: задає, чи відображати екрани панелі адміністратора.
publicly_queryable: задає, чи можна виконати запити з цього типу постів з боку користувача.
exclude_from_search: чи повинні пости з'являтися в результатах пошуку.
menu_position
Як іконок для користувача типів постів можна використовувати dashicon. Скажімо, ви хочете використовувати іконку download dashicon, для цього надайте лейблу нижче значення dashicons-download:
Hierarchical
За допомогою цього аргументу можна задавати ієрархію для нових типів. За замовчуванням стоїть значення false. Якщо встановити true, нові типи стануть ієрархічними.
За допомогою цього аргументу можна задати масив мета боксів і полів, які будуть з'являтися на екрані під час редагування або створення нового поста. За замовчуванням варто title і editor. Якщо задати false, відключиться стандартну поведінку. Є кілька можливих опцій:
title: Поле введення тексту для створення заголовка поста.
thumbnail: вбудовані зображення.
excerpt: Область textarea для уривка поста.
trackbacks: включення і відключення трекбеків і пінгбеков.
custom-fields: кастомниє поля input.
post-formats: Додає формати постів
page-attributes: Атрибути сторінки. Важливий параметр для ієрархічних типів постів, можна вибрати батьківський пост.
register_meta_box_cb
Додає колбек функцію, яка викликається при установці мета боксів для форми редагування. Функція приймає один аргумент $ post, в якому зберігається об'єкт WP_Post поточного редагованого поста. Функція особливо корисна для розробників. З її допомогою можна створювати призначені для користувача мета бокси, які будуть відображатися на екрані редагування типу.
Taxonomies
Масив зареєстрованих таксономій, таких як category або post_tag, які будуть використовуватися з кастомними типом постів.
has_archive
Завжди при зміні URL в WordPress зберігайте зміни в панелі Налаштування >> посилання для повторного створення правил перезапису. Параметр slug відповідає за URL, а with_front задає буде структуру посилання. Все ще не зрозуміли для чого потрібен with_front? Розберемо приклад. Скажімо, структура вашого посилання точно така ж як на зображенні нижче з написом blog на кінці.

can_export
За допомогою цього аргументу можна задати, чи можна експортувати пости кастомними типу через інструменти WordPress. За замовчуванням варто true.
За допомогою цього аргументу можна контролювати змінні запиту, які використовуються для отримання постів даного типу.
Якщо задано true, ви зможете запросити кастомний тип book за посиланням example.com/?book=harry-potter, де harry-potter це параметр slug посилання. Якщо задати рядок, а не true, можна написати так: example.com/?publication=harry-potter.
Нюанс з query_var
Якщо query_var не заданий в аргументі масиву реєстрації типу, за замовчуванням встановлюється значення $ post_type, тобто даний параметр заданий завжди, якщо його примусово не встановила в false.
І тут є один нюанс. Якщо значення query_var додати через рядок запиту в URL, завжди буде видаватися сторінка 404. Тут потрібно прояснити. Скажімо, значення query_var одно review, то URL вашого сайту можна вказати в будь-який з наступних форм:
Ці посилання приведуть вас на сторінці 404. Про це я дізнався з власного гіркого досвіду. Коли я зіткнувся з цією проблемою я створив тему на WordPress core trac і повідомив про помилку. У мене пішло кілька тижнів на те, щоб розібратися з цією проблемою перед тим, як мені відповіла команда WordPress.
Прискорюємо настройку користувальницьких типів постів за допомогою плагінів
Тепер, коли ми розібралися з основами, варто сказати про те, що існує маса плагінів для WordPress, за допомогою яких можна сильно спростити процес створення кастомних типів постів. Приклади (не всі):
Custom Post Type UI
Custom Post Type Maker
висновок
Редакція: Команда webformyself.
Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?
Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress "Унікальний сайт з нуля"