В версии 3.0 WordPress представил пользовательские типы записей и обновил пользовательские таксономии, представленные еще в версии 2.8. Теперь пользователи и разработчики WordPress могут создавать свои собственные типы записей и таксономии. Больше никто не привязан к стандартным понятиям Запись, Страница и скучным Рубрикам и Меткам.
Да, использование своих типов записей, таксономий и мета-блоков — это круто. Знаете, что еще круче? Создавать все это одной строкой кода.
Смотрите также:
Создание собственных типов записей и таксономий
Мне показалось сложным и скучным создавать свои типы записей и таксономии с помощью функций register_post_type() и register_taxonomy(). И хотя они очень полезны, мне не нравится, что мне приходится писать много аргументов и передавать их в функцию, которую мне также придется использовать с функцией add_action().
Даже для разработчика делать это с каждым типом записи и таксономией достаточно болезненно, я даже не могу представить, каково это для новеньких пользователей WordPress.
Не поймите меня неправильно, вам все еще можно или нужно создавать их с помощью SuperCPT, но SuperCPT исключает принцип повторения и упрощает процесс. На практике вам нужно будет просто назначить имя вашему типу записи или таксономии, и SuperCPT сделает все остальное.
И лучшее в этом — вам не нужно играться с созданием своих мета-блоков и мета-полей в них!
SuperCPT позволяет вам создавать свои мета блоки с полями, которые могут быть простыми HTML элементами из WYSIWYG редактора. Делать это с помощью написания простых массивов — на данный момент самый простой способ создания мета-блоков, который я видел.
SuperCPT — решение «Всё в одном»
Я могу много говорить о SuperCPT, но мне кажется, что лучше перейти к примерам — сразу же после того, как мы посмотрим отличное 5-минутное видео (англ. язык).
Установка
Получите свою копию из библиотеки плагинов WordPress.org , установите ее и затем откройте файл functions.php вашей темы, чтобы начать работать с магией SuperCPT!
Видео
Создание своих типов записей
Как вы могли видеть на видео, создавать свои типы записей так же просто, как написать строку кода:
<?php // the regular method /* register_post_type( 'computer_part', array( 'labels' => array( 'name' => __( 'Computer Parts', 'my-locale' ), 'singular_name' => __( 'Computer Part', 'my-locale' ) ), 'public' => true, 'has_archive' => true, ) ); */ // the SuperCPT method $type_computer_part = new Super_Custom_Post_Type( 'computer-part' ); ?>
SuperCPT автоматически берет "computer-part" и удаляет неподходящие символы, а также делает все символы слов заглавными. Он также берет разные формы "computer-part" и использует их для меток, например, "Add New Computer Part" или "Search Computer Parts" и т.д.
Конечно, вы можете установить любые метки. Более того, вы можете установить значения всех аргументов, которые есть у register_post_type(), если вам захочется. Перейдите в раздел "Custom Post Types" SuperCPT Wiki, чтобы найти весь список аргументов и их стандартные значения.
SuperCPT включает бесплатный набор иконок под названием Glyphicons для иконок ваших типов записей. Это также просто, как набрать еще одну строку кода:
$type_computer_part->set_icon( 'display' );
Если вы не знаете, как использовать этот параметр, обратите внимание на страницу SuperCPT в разделе Инструменты вашей панели администратора — там вы увидите названия иконок.
Создание своих таксономий
Создание своих таксономий с помощью SuperCPT очень похоже на создание своих типов записей. Опять-таки, достаточно одной строки кода:
<?php // the regular method /* register_taxonomy( 'manufacturers', 'computer-part', array( 'label' => __( 'Manufacturers', 'my-locale' ), 'rewrite' => array( 'slug' => 'manufacturer', 'my-locale' ) ) ); */ // the SuperCPT method $tax_manufacturer = new Super_Custom_Taxonomy( 'manufacturer' ); ?>
Как и с собственными типами записей, аргументы для собственной таксономии устанавливаются автоматически, но также могут быть изменены. Больше об аргументах вы можете узнать из раздела "Custom Post Types" SuperCPT Wiki.
Как вы могли догадаться, одна строка кода выше не может привязать вашу таксономию к типу записи. Вам нужно сделать это с помощью функции SuperCPT, вот так:
$tax_manufacturer->connect_post_types( 'computer-part' );
Создание собственных мета-блоков
Моя любимая часть! :)
На самом деле лучшее в SuperCPT — простота добавления собственных мета-блоков записей. Вам не нужно париться с HTML кодом. Но, конечно же, в этот раз мы не обойдемся одной строкой кода.
Есть две основные функции: add_meta_box() и add_meta_boxes(). В этом руководстве мы будем работать с первой. Параметры id и fields обязательны, но в Wiki есть также много других параметров, которые вас заинтересуют.
<?php $type_computer_part->add_meta_box( array( 'id' => 'our-review', // the title is converted from 'id', if there's no 'title' parameter 'fields' => array( 'score' => array( 'label' => __( 'Our Score', 'my-locale' ), 'type' => 'radio', 'options' => array( '1', '2', '3', '4', '5' ) ), 'release-date' => array( 'label' => __( 'Release Date', 'my-locale' ), 'type' => 'date' ), // yes, there is a date picker... 'short-comment' => array( 'label' => __( 'A Short Comment', 'my-locale' ), 'type' => 'textarea' ), 'review-text' => array( 'label' => __( 'Full Review', 'my-locale' ), 'type' => 'wysiwyg' ) // ...and there's a WYSIWYG text area! :) ) ) ); ?>
Есть много элементов, которые вы можете разместить в мета-блоках:
- Спрятанные поля
- Обычные поля ввода
- Обычные области текста
- Редакторы WYSIWYG
- Чекбоксы
- Радиобаттоны
- Пункты выбора
- Выбор дат
- Новые поля HTML5: телефоны, электронная почта и т.д.
Мы также можем взять данные из других типов записей и заполнить поля чекбокса, радиобаттона и селекта этими данными. В некоторых случаях это может быть очень полезным.
Функция обертки (Wrapper)
И последнее: вам нужна функция, чтобы создать эти типы записей, которую вам нужно будет зацепить за action — SuperCPT рекомендует зацепку after_setup_theme. Но если вы собираетесь написать плагин для создания собственных типов записей и таксономий, лучше использовать зацепку plugins_loaded, чтобы дождаться загрузки плагина. Вам также нужно убедиться, что класс Super_Custom_Post_Type существует, прежде чем ссылаться на него.
Вот демо-функция из документации по SuperCPT:
<?php function scpt_demo() { if ( ! class_exists( 'Super_Custom_Post_Type' ) ) return; // All your SuperCPT magic goes here! } add_action( 'after_setup_theme', 'scpt_demo' ); ?>
Заключение
Теперь вы знаете всё о самом простом менеджере собственных типов записей и таксономий — SuperCPT! Если вам нужно больше информации — обратите внимание на полную документацию. Есть много функций и фильтров, которые вам могут понравиться.
Что скажете по поводу этого крутого WordPress плагина? Расскажите нам в комментариях и, если он вам понравится, не забудьте поделиться этой статьей!
Комментарии к записи: 7
Здравствуйте. У меня есть один вопрос. В девизе вашего блога написано «Про WordPress за чашкой кофе». Действительно, у вас замечательные заголовки. И мне очень многое из того, о чем вы пишите хочется знать. Однако, когда я читаю статью, то мне почти все совершенно не понятно. Например, я не знаю, что такое свои типы записей, таксономия и мета блоки. И чем они хороши. Я не знаю как они могут выглядеть и какая мне может быть польза от их применения. Если ваш блог для программистов или супер продвинутых знатоков WordPress, тогда вопрос снимаю. Значит не туда попал. Ответьте, пожалуйста, будет ли в ваших статьях писаться о конкретных возможностях применения того, о чем вы пишете? Спасибо.
Статья пишется для ознакомления с новым функционалом. Есть статьи для новичков, есть статьи для продвинутых пользователей. Если вы не понимаете о чем идет речь в посте, не понимаете зачем это вам нужно — тогда в чем вопрос?)
Я начинал с этого:
https://hostenko.com/wpcafe/uroki-wordpress/
Советую так же, начните учится и перестаньте наедятся, что все будут делать все за вас.
Ок, ответ понятен. Спасибо за ссылку.
Обратите внимание на блок «Смотрите также» в самом начале этой статьи. Первая же ссылка — и вам сразу станет понятно, что такое «свои типы записей». Специально же добавили сопутствующие уроки из этой тематики, чтобы новичкам было легче разобраться, а вы ленитесь, не жмете на ссылки… :)
Был неправ. Действительно, есть подробные и понятные объяснения. проглядел. Сорри :)
А как сделать чтобы the_content не выводит записи которые созданы как в примере в вики в разделе Movie? И как выводить отдельно записи из Movie?
согласен, не понятно как созданные посты выводить в визуальном режиме и как раздавать им права доступа на редактирование или создание другим пользователям