Довільний тип записів в wordpress - register_post_types, register_taxonomy

Про записах в WordPress: де зберігаються в базі даних, і як їх отримати

Наведу приклад, як отримати 10 записів типу post (стандартні Записи в панелі адміністратора).
У загальних рисах, дані особливо виконувати не треба. У шаблонах вони вже встановлені, наприклад, в single.php дані по запису вже доступні для обробки в циклі

Якщо дані потрібно отримати десь поза циклом або шаблону, використовується запит WP_Query

Дані можна отримати за допомогою SQL запиту:

Всі три способи вище дадуть однаковий результат на виході.

Попередньо типи записів в WordPress: post, page, attachment, revision, nav_menu_item

Записи або пости (post)

Для Записів використовуються наступні файли шаблонів (в порядку пріоритету):

Файли шаблонів шукаються зверху вниз по списку в порядку пріоритету. Якщо файл шаблону знайдений в темі, використовується він, а пошук припиняється.

Сторінки (page)

Створюємо спеціальний шаблон сторінки (page)

Де-небудь всередині теми в корені або її піддиректорії створити файл з довільним назвою і розширенням php. наприклад, landing.php. Усередині ви можете розмістити абсолютно будь-який шаблон, який може бути абсолютно не схожий на інші сторінки сайту. Але головне, це помістити ось такий код в початок файлу:

Template Name - це спеціальна мітка, яка говорить WordPress про те, що цей файл - спеціальний шаблон.
Тепер при створенні і редагуванні будь-якої сторінки (page) подивіться в блоці праворуч з назвою Атрибути сторінки. в ньому в розділі Шаблон ви можете вибрати наш унікальний Лендінгем.

Довільний тип записів в wordpress - register_post_types, register_taxonomy

Як налаштувати шаблон сторінки

Для Сторінок (Page) використовується наступна ієрархія шаблонів. Як і з Записами. вказую в порядку пріоритету:

Прикріплення, вкладення або аттачменти (attachment)

Отримати вкладення для подальшої маніпуляції над ними можна за допомогою наступного коду:

Ієрархія шаблонів для аттачменті:

  • true або -1. зберігає кожну версію чернетки. Варіант за замовчуванням
  • false або 0. відключає збереження чернеток, крім 1 автосохранения
  • Ціле число більше нуля: зберігається вказане число версій чернеток + 1 автосохранение. Більш ранні версії, що не укладаються в вказане число, автоматично видаляються

Елементи навігаційного меню (nav_menu_item)

Навігаційне меню (nav_menu_item) - це тип записів, який зберігає інформацію про одиниці навігації в WordPress. Перший, і поки єдиний тип запису, який використовується не як інші типи записів, дані для роботи і відображення на сайті отримують свої окремі функції.
Також, навігаційні меню за замовчуванням не включені. Щоб їх включити, потрібно оголосити про їх підтримку в functions.php:

  1. прописати
  2. Або зареєструвати місце під меню за допомогою register_nav_menu (). тоді підтримка меню включиться автоматично

Для отримання даних користуйтеся wp_nav_menu (). тому що WP_Query не працюватиме, і це відмінна риса типу постів nav_menu_item

Призначений для користувача Довільний тип запису (Custom Post Type, CPT WordPress)

Ось ми і підійшли до головного - того інструменту, який дозволяє розширити стандартний блогових функціонал WordPress до нескінченних можливостей: призначений для користувача довільний тип запису.
Найпростіший приклад, як можна зареєструвати наш новий тип запису sheensay_product

Тут sheensay_product - це назва нового типу записів. Воно не повинно конфліктувати з іншими в системі, про це докладніше нижче.
Також, в цьому варіанті воно служить ярликом цього типу записів, тобто присутній в URL. Якщо ж хочете вказати інший ярлик, наприклад продукція. робіть як на прикладі нижче

Як правильно підібрати назву нового типу записи

У WordPress зарезервовані наступні назви, які можна використовувати в якості імені нового типу записи:

Також, варто утриматися від використання префікса wp_ на початку назви, так як, можливо, це викличе конфлікти з майбутніми версіями ядра WordPress.
Найкраще, якщо ви будете випереджати назви довільними префіксами, пов'язаними з назвою вашого сайту, продукту або бренду, наприклад sheensay_product. тоді гарантовано уникнете потенційних конфліктів

Як зробити довільну таксономию

Шаблони для довільних типів постів

Все залежить від того, якого роду інформація відображається. Варіантів може бути 3: шаблон конкретної записи, шаблон архівів записів і шаблон таксономій

Шаблон сторінки записи

Перераховуються в порядку пріоритету

в нашому випадку, тут і далі - це sheensay_product

Шаблон архіву записів

Шаблон довільній таксономії

Тут імя_таксономіі - це sheensay_product_type. а імя_терміна - це ярлик тієї таксономії, що ви створите в адмінці.

Як отримати дані довільного типу записів (Custom Post Type WordPress) і відобразити на сайті

Отримати дані довільного типу записів (Custom Post Type) в WordPress для відображення на сайті можна тими ж способами, що і звичайні Записи та Сторінки

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

Готовий клас для створення довільного типу записів з довільної таксономії

Щоб URL формувався, ви повинні перейти в настройки постійних посилань /wp-admin/options-permalink.php і налаштувати відмінний від простого вид загальних налаштувань

Довільний тип записів в wordpress - register_post_types, register_taxonomy

Як налаштувати структуру постійних посилань

Нижче сам код класу. Ви можете не вносити в нього ніяких змін, а поміняти ярлик типу записи можна в самому кінці в рядку new Sheensay_Product ( 'продукція');
Сам код пишеться в MU Plugin або в functions.php. Перший варіант кращий, так як в цьому випадку, ви не втратите доступу до контенту нового типу записів при зміні активної теми.

Тепер в адмінці ви можете зареєструвати нову продукцію і їх типи

Довільний тип записів в wordpress - register_post_types, register_taxonomy

Custom Post Type в адмінці

Створення довільного типу записів за допомогою плагіна Custom Post Type UI

Щоб не писати код вручну, ви можете скористатися готовим плагіном. Він досить популярний, і на момент написання статті має 300 тисяч завантажень з офіційного репозиторію WordPress.org

Завантажити плагін Custom Post Type UI з офіційного репозиторію WordPress.org

Ієрархія шаблонів теми в WordPress

Нижче ілюстрація ієрархії шаблонів, тобто як шукаються і підбираються відповідні шаблони (template) всередині теми (клікабельно):

Довільний тип записів в wordpress - register_post_types, register_taxonomy

Ієрархія шаблонів тим в WordPress

На закінчення

у мене довільний тип запису, зробив шаблон архіву для цього типу, висновок контенту через wp_query, а пагінація не працює (((коли скасовую архів в функції довільного типу записи (has_archive = false), і вказую шаблон для виведення шляхом створення нової сторінки з таким шаблоном - тоді пагінація працює. в чому може бути справа? Було б цікаво почитати продовження цієї статті з описом створення пагінацію. а за статтю спасибо большое!