Статьи

Использование SuperCPT для создания пользовательских типов записей, таксономий и мета-боксов

С выпуском версии 3.0 WordPress представил пользовательские типы записей и обновленные пользовательские таксономии, которые были представлены в v2.8. С тех пор пользователи и разработчики WordPress могут создавать свои собственные типы сообщений и таксономии. Люди больше не прикованы к скучным «постам» и «страницам» со скучными «категориями» и «тегами».

Да, использование пользовательских типов записей, пользовательских таксономий и пользовательских мета-блоков — это круто. Вы знаете, что круче? Создание каждого с одной строкой кода.


Мне сложно и скучно создавать пользовательские типы записей и таксономии с помощью функций register_post_type() и register_taxonomy() . Хотя они чрезвычайно полезны, я ненавижу их, когда мне нужно написать несколько аргументов и передать их с помощью функции, которую я также должен использовать с функцией add_action() .

Даже будучи разработчиком, это больно делать с каждым отдельным типом поста и таксономией, которые я должен создать — я не могу себе представить, насколько это сложно для начинающих пользователей WordPress.

Не поймите меня неправильно, вы все равно можете или должны делать это с SuperCPT, но SuperCPT придерживается принципа СУХОЙ (не повторяйте себя) и облегчает процесс. На практике вам просто нужно установить строчное «единственное имя» вашего типа поста или таксономии, а SuperCPT обрабатывает все остальное с правильной прописной буквой.

И самое приятное то, что вам не нужно разбираться с беспорядком создания пользовательских мета-блоков и мета-полей в них!

SuperCPT позволяет создавать мета-блоки с полями, которые различаются между простыми элементами HTML от редакторов WYSIWYG и средств выбора даты. Позволить нам делать все это путем написания простых массивов — это, безусловно, самый простой способ создания мета-блоков.


Я могу похвалить SuperCPT весь день, но, как сказал создатель Мэтью Бойнс на странице SuperCPT на GitHub , доказательство в пудинге, и мы должны перейти к примерам — сразу после того, как мы увидим потрясающий пятиминутный экран.

Получите копию из репозитория плагинов WordPress.org , установите ее, а затем откройте файл functions.php вашей темы, чтобы творить чудеса SuperCPT!

http://vimeo.com/59368054

Как вы можете видеть на видео, создание пользовательских типов записей так же просто, как ввод строки кода:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?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 » и использует их для формирования меток, таких как «Добавить новую компьютерную часть» или «Поиск компьютерных частей» и так далее.

Конечно, вы можете установить любые метки, как вам нравится. Фактически, вы можете установить все аргументы, которые есть у register_post_type() , если вы хотите поиграть. Перейдите в раздел «Пользовательские типы постов» SuperCPT Wiki, чтобы узнать весь список аргументов и их значения по умолчанию.

SuperCPT включает в себя бесплатный набор иконок под названием Glyphicons для вас, чтобы установить иконки для ваших типов сообщений. Это так же просто, как набрать другую строку кода: $type_computer_part->set_icon( 'display' ); Если вам интересно, что использовать в качестве параметра, проверьте страницу SuperCPT в разделе «Инструменты» панели администратора — вы найдете названия значков.

Создание пользовательских таксономий с помощью SuperCPT очень похоже на создание пользовательских типов записей. Опять же, для SuperCPT достаточно одной строки:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?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’ );
 
?>

Как и в случае пользовательских типов записей, параметры пользовательских таксономий устанавливаются автоматически, но их также можно изменить. Проверьте SuperCPT Wiki в разделе «Пользовательские типы сообщений», чтобы узнать больше об аргументах.

Как вы можете догадаться: эта строка кода выше не может связать вашу пользовательскую таксономию с типом поста. Это необходимо сделать с помощью вспомогательной функции SuperCPT, например: $tax_manufacturer->connect_post_types( 'computer-part' );

Пристегнись, это моя любимая часть! 🙂

Серьезно, лучшая часть SuperCPT — это простота добавления пользовательских мета-блоков записей. Вам не нужно связываться с какими-либо HTML-кодами или беспокоиться о сохранении, очистке и т.п. ваших данных. Однако мы не можем использовать однострочные коды для создания мета-блоков на этот раз (очевидно).

Есть две основные функции: add_meta_box() и add_meta_boxes() . (Мы собираемся придерживаться первого для этого урока.) Параметры id и fields являются обязательными, но в вики есть множество других параметров, если вы хотите их увидеть.

01
02
03
04
05
06
07
08
09
10
11
12
13
<?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!
    )
) );
 
?>

Теперь я знаю, что существует множество array , но есть вещи, которые даже SuperCPT может предсказать, верно? 🙂

Есть много элементов поля, которые вы можете поместить в мета-блоки:

  1. Скрытые логические поля
  2. Обычные текстовые вводы
  3. Регулярные текстовые
  4. WYSIWYG редакторы
  5. Флажки
  6. Радио коробки
  7. Выберите коробки
  8. Выбор даты
  9. И новые поля ввода HTML5, такие как: телефон, электронная почта и т. Д.
Мы также можем извлекать данные из других пользовательских типов записей и заполнять эти поля флажками, переключателями или полями выбора. Это может быть очень полезно для некоторых случаев!

И последнее: вам нужна функция-обертка для установки этих пользовательских типов записей и after_setup_theme этой функции к действию — SuperCPT рекомендует after_setup_theme но если вы собираетесь написать плагин для создания пользовательских типов after_setup_theme и таксономий, вам лучше использовать хук plugins_loaded для ожидания загрузки плагинов. Вы также должны быть уверены, что класс Super_Custom_Post_Type существует, прежде чем ссылаться на него.

Вот демонстрационная функция-обертка из документации SuperCPT:

01
02
03
04
05
06
07
08
09
10
11
<?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? Скажите нам, что вы думаете, комментируя ниже, и, если вам понравилось (я уверен, что вам понравится!), Не забудьте поделиться постом!