Создание своих типов данных. Плагин types для WordPress.
Как известно в WordPress изначально существует два основных типа это записи и страницы.
Добвление типов данных без кода
Сегодня я расскажу, как добавить новые типы данных, не лазя в исходный код CMS и совершенно без знания API WordPress.
Наверное, один из самых полезных плагинов для WordPress это плагин Types разработанный командой разработчиков с сайта wp-types.com. Для начала можно зайти на сайт и скачать плагин как у самих разработчиков, так и с официального репозитория WordPress.
https://wordpress.org/extend/plugins/types/
После скачивания плагина и установки активируем его. Слева в меню появится новый пункт types
Для начала заходим в пункт Types -> Индивидуальные типы и систематики и в нем нажимаем на кнопку Добавить индивидуальный тип публикации далее заполняем форму. Попробуем в WordPress сделать небольшую интернет витрину для публикации товаров на сайт.
После заполнения спускаемся ниже и настраиваем:
- Параметры метабокса Просматриваемость оставляем как есть.
- Параметры метабокса Выбрать систематики. В нашем типе рубрики и метки будут выключены.
- В метабоксе Метки можно изменить написание стандартных команд на свой язык.
- Вывести Разделы на дисплей:
- Заголовок – всегда оставляем включенным, даже если у вас нет необходимости его выводить, это поле пригодится для нахождения нужного материала в панели администратора.
- Редактор – визуальный редактор, стандартное поле для типов данных в WordPress. В нашем случаи это поле не понадобится, отключаем его.
- Комментарии – для Интернет витрины, они будут полезны, особенно если описания к товарам будет мало. Комментарии помогают сделать страницы более уникальными.
- Редакции – редакции это копии документа, которые сохраняются автоматически или в момент публикации и обновления материала на сайте. Думаю, что материал у нас в витрине будет обновляться не часто, поэтому редакции мы можем оставить отключенными.
- Остальные пункты кроме Миниатюры находящиеся ниже нам не нужны. Ставим галочку напротив пункта Миниатюра.
- Индивидуальные поля — дополнительные поля для вывода дополнительной информации, о них поговорим позднее.
- Расширенный – расширенные настройки тоже можно оставить как есть.
После всех настроек нажимаем на кнопку Сохранить индивидуальный тип публикации в нижней части экрана.
После сохранения в меню администратора появится новый тип данных Товары.
Как видим, рядом с типом в меню у нас стандартная иконка, ее можно изменить в настройках типа. Там же можно изменить положение пункта в меню администратора.
Иконку необходимо вставлять формата ico или png.
Если мы сейчас зайдем в меню Товары -> Добавить новый, то увидим что у нас отображается только название товара. Так как товаров будет много, то хорошо бы их разделить на группы, для этого:
- Снова заходим в меню Types -> Индивидуальные типы публикаций и систематик.
- Добавить индивидуальную систематику.
- Заполняем поля формы и выбираем тип публикации Товар.
- Переименовываем метки.
- Расширенные настройки оставляем как есть.
- Сохраняем систематику.
После проделанных действий зайдя в Меню администратора -> Товары справа у нас появятся еще один метабокс Групы товаров, где можно задавать категории в виде ключевых фраз. Этот метабокс похож на Метки.
Если все получилось, то продолжаем дальше.
Следующим шагом будет добавление нескольких дополнительных полей для типа. Давайте перечислим, какие это поля:
- Название товара
- Цена
- Описание товара
Пока этих полей нам будет достаточно.
Заходим в пункт Types -> Индивидуальные поля. В появившемся окне вводим Заголовок группы полей и Описание группы.
Ниже в метабоксе необходимо указать Где выводить эту группу на дисплей. Под пунктом Типы публикаций нажимаем кнопку Редактировать и отмечаем тип Товары. Здесь моно отмечать и несколько типов, если в выбранных типах будут нужны похожие поля.
Термины и Шаблоны не выбираем.
Справа есть группа под названием Имеющиеся в распоряжении поля необходимо выбрать для названия и цены товара Однострочные поля, а дляОписания товара выбрать WYSIWYG.
Слева у вас появятся поля с настройками:
- Ввести название поля – вводим название поля, например Название товара.
- Ввести поле динамических данных в поле – тут необходимо ввести уникальное имя поля на английском, назовем product-name.
- Описать это поле – можно оставить пустым, так как из названия поля все и так ясно.
- Простое или повторяющееся поле? –в нашем случаи, все поля могут иметь только одно значение. Этот параметр очень удобный, если вам необходимо загрузить несколько картинок и потом выводить их на странице.
- Обязательно – ставим галочку напротив полей, которые считаем обязательными.
После настройки всех трех полей можно нажать на стрелку рядом с названием и свернуть параметры поля.
Есть еще два параметра для удаления поля крестик и для сортировки полей стрелка. Выставьте поля в нужном порядке и нажимаем Сохранить. После сохранения переходим в созданный тип публикации Товары -> Добавить новый. Если все было сделано правильно у вас появятся новые индивидуальные поля.
Заходим в меню Товары — > Группы товаров -> Создадим группы для товара.
- Фотоаппараты
- Планшеты
- Ноутбуки
В каждой группе для удобства создайте по 3 товара с описанием и миниатюрами.
Далее необходимо наши товары вывести на экран и для этого нам понадобится войти в меню Внешний вид — > Меню и добавить новое меню под названием Витрина.
Далее в левой колонке находим метабокс Группы товаров,если групп товаров не оказалось, то можно их включить вверху во вкладке Настройки экрана. Выбираем созданные раньше группы товаров Ноутбуки, Планшеты, Фотоаппараты и добавляем их в область созданного меню. Незабываем нажать кнопку Сохранить меню.
Чтобы отобразить меню заходим в пункт Внешний вид -> Виджеты и в боковую панель сайта перетаскиваем виджет Произвольное меню. Вводим заголовок Категории товаров и выбираем меню Витрина как показано на рисунке ниже.
После всех действий на сайте, появится наше меню.
Теперь необходимо создать файл шаблона для вывода таксономии и дать ему имя
taxonomy-{taxonomy}.php
Вместо {taxonomy} необходимо вставить содержимое Поля динамических данных из созданной нами систематики Группы товаров.
В шаблоне необходимо добавить структуру из файла в задании.
Структуру необходимо поменять под ваши настройки полей.
Рассмотрим все функции которые использовались в шаблоне:
single_tag_title() — Выводит заголовок текущей метки, если просматривается архивная страница метки.
WP_Query() – задавая различные параметры, можно делать выборку и сортировку записей. Похоже на запрос к базе данных. Подробнее можно почитать на сайте разработчиков wordpress в кодексе, правда только на английском WP_Query(). Советую посмотреть на функцию, очень полезная.
$wp_query->query_vars – возвращает массив переменных запроса. Для понимания как работает данная конструкция, раскомментируйте ее в файле шаблона и посмотрите результат.
1 |
?><!--pre><?php print_r( $wp_query->query_vars) ?></pre--><?php |
have_posts() — проверяет, есть ли у текущего запроса WP результаты для вывода.
the_post() – счетчик для цикла.
the_content() – содержимое поста или записи, так как мы редактор не включали, то эта функция ничего не делает.
get_post_meta($post_id, $key, $single) – возвращает данные из произвольного поля. Каждое поле, которое мы создавали для типа имеет свое произвольное поле, которое можно вывести через эту функцию.
$post_id (число) (обязательный) — ID поста, произвольные поля которого нужно получить.
$key (строка) (обязательный) — название произвольного поля, значение которого нужно получить.
$single (логический) — если выставить параметр в true, то функция вернет единственное значение в виде строки. Если параметр будет равен false или не будет установлен, то функция вернет массив значений произвольных полей.
Однако, если в значении произвольного поля находится серриализованный массив, то занчение true вернет, нормальный массив, а если указать false, то вернется массив в элементе (например [0]) которого будет все тот же сериализованный массив. Т.е. в этом случае параметр работает «наоборот».
По умолчанию: false
get_permalink() – ссылка на пост.
the_title_attribute( ‘echo=0’ ) – атрибуты ссылки.
the_post_thumbnail(‘thumbnail’) – миниатюра с размером thumbnail.
Поговорим подробнее о том откуда я брал метки для функции get_post_meta(). Возьмем к примеру:
1 |
get_post_meta($post->ID, "wpcf-product-name", $single = true); |
Зайдем в меню Товары и откроем один из товаров на редактирование, далее в верхней части экрана выбираем Настройки экрана и поставим метку напротив пункта Произвольные поля, при этом появится метабокс с аналогичным названием.
Посмотрев на картинку, все станет ясно, у вас могут быть другие названия, поэтому необходимо внимательно сравнить произвольные поля с метабокса с тем, что находится в файле шаблона. Если вы все поправите, то у вас должен поменяться вывод материалов типа товар.
Если у вас также вывелся товар, значит вы все сделали правильно и останется только стилизовать вывод при помощи стилей. Если вам не хочется делать шаблон в ручную, то можно автоматизировать вывод контента без вмешательства в код. Вывод можно сделать при помощи плагина views , плагин хоть и платный но для тех кто постоянно занимается разработкой на WordPress этот плагин может ускорить работу в 3-4 раза.

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.
Здравствуйте, этим плагином можно сортировать метки?
Пример:
——————————
Жанр: Комедия, боевик
Актеры: Брюс Ли
——————————
То есть (комедия, боевик, Брюс Ли) это метки, которые выводятся в разных местах, можно реализовать такой сортированный вывод на меток на вордпресс?
Не совсем понял что такое «метки которые выводятся в разных местах», но если вы говорите о том что по меткам можно реализовать вывод записей, то да.
В вашем случаи я бы делал отдельную таксономию на Жанр и на Актеры и потом просто делал нужный запрос к базе. Разделение меток будет для вас в дальнейшей разработке.
Также можно воспользоваться плагином views.
Куда сохранять файл taxonomy-{taxonomy}.php ?
wp-content/themes/имя темы/сюда
этот файл wordpress подхватит автоматически