Настройка произвольного типа для портфолио — урок 25
Для создания страницы портфолио нам будет необходим новый тип данных, если вы еще не знаете что это такое, я немного расскажу вам. Изначально после установки WordPress имеет несколько произвольных типов (Записи, Страниц, Медиафайлы), мы с вами попробуем создать новый тип данных portfolio и добавим категории, такие же как в стандартных записях. Вообще хочу сказать что если есть возможность сделать что-то при помощи API CMS, то лучше использовать эту возможность.
В нашей теме в папке functions добавьте файл custom-type.php в нем мы будем хранить новые типы файлов и таксономии. Чтобы новый файл работал необходимо в файл functions.php вставить подключение созданного файла как показано на картинке ниже.
После создания и подключения файла, создадим сам тип данных. Для создания типа данных необходимо использовать функцию register_post_type(), о ней можно подробно почитать на официальном сайте, в кодексе wordpress. Я расскажу о своем коде, который мы будем использовать.
Кстати для разработка типа данных можно использовать хороший генератор типов данных, но это не значит что этот генератор будет работать вечно и вам ненужно знать как работает функция register_post_type().
О генераторе типов данных я думаю еще напишу, а может и создам свой, а сейчас расскажу как все работает на примере моего кода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// Register Custom Post Type function my_works() { $labels = array( 'name' => _x( 'works', 'Post Type General Name', 'my_works' ), 'singular_name' => _x( 'work', 'Post Type Singular Name', 'my_works' ), 'menu_name' => __( 'portfolio', 'my_works' ), 'parent_item_colon' => __( 'Parent work:', 'my_works' ), 'all_items' => __( 'All works', 'my_works' ), 'view_item' => __( 'View work', 'my_works' ), 'add_new_item' => __( 'Add New work', 'my_works' ), 'add_new' => __( 'Add New', 'my_works' ), 'edit_item' => __( 'Edit work', 'my_works' ), 'search_items' => __( 'Search work', 'my_works' ), 'not_found' => __( 'Not found', 'my_works' ), 'not_found_in_trash' => __( 'Not found in Trash', 'my_works' ), ); $rewrite = array( 'slug' => 'my-portfolio', 'with_front' => true, 'pages' => true, 'feeds' => true, ); $args = array( 'label' => __( 'my_works', 'my_works' ), 'description' => __( 'Works for site', 'my_works' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'custom-fields', ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => 'https://wp-admin.com.ua/wp-content/themes/rainbow/favicon.ico', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'query_var' => 'my_portfolio', 'rewrite' => $rewrite, 'capability_type' => 'post', ); register_post_type( 'my_works', $args ); } // Hook into the 'init' action add_action( 'init', 'my_works', 0 ); |
Много рассказывать не буду, начну расписывать вам по порядку все атрибуты передаваемые в функцию.
Атрибуты функции register_post_type()
name — общее название произвольного типа данных, обычно пишут во множественном числе. Используется для вывода названия в админке.
singular_name — имя типа данных в одиночном числе.
menu_name — имя нового типа в меню, в нашем случаи это portfolio.
parent_item_colon — метка для вывода родительской записи, пишем в одиночном числе.
all_items — метка для всех записей. По умолчанию для всех записей данного типа ‘Parent work:’.
view_item — текст для просмотра записи данного типа ‘View work’.
add_new_item — надпись на кнопку для добавления новой записи.
add_new — кнопка добавить новую запись рядом с заголовком.
edit_item — заголовок для редактируемой записи.
search_items — меняем надпись на то что нам необходимо.
not_found — надпись по умолчанию, если нет записей данного типа.
not_found_in_trash — надпись в пустой корзине «Записей не найдено».
slug — ярлык в ссылке данного типа, важно сразу продумать, как его назвать.
with_front — позволяет отображать более сильную ссылку. Если значение true то запись по ссылке будет отображаться так /news/, при false ссылка будет выглядеть так /blog/news/. Думаю правильно пока ставить по умолчанию true.
pages — по умолчанию true, по умолчанию разрешено постраничную навигацию для отдельных записей. Если этот параметр установлен в false, то вы не сможете воспользоваться коротким тегом (<!—nextpage—>) для вставки постраничной навигации внутри записи.
feeds — при помощи указания этого параметра в (true), мы можем определить будет ли данный тип данных отображаться в ленте rss.
label — метка типа данных в множественном числе.
description — краткое описание для типа данных.
supports — включение дополнительного функционала, этот же функционал можно включить и после создания типа данных при помощи функции add_post_type_support(). Рассмотрим все что можно включить при помощи этой функции.
• title — заголовок поста.
• editor (content) — отображает поле ввода для контента страницы.
• author — выбор автора из списка имеющихся пользователей.
• thumbnail (featured image) — поддержка миниатюры записи.
• excerpt — активация области короткой записи. Кто не в курсе, если мы вводим эту область, то при выводе архива записей будет выводиться это текст. Очень полезно для SEO.
• custom-fields — включение метабокса с произвольными полями, о них мы еще будем говорить.
• comments — просмотр списка комментариев к статье оставленных другими и возможность оставлять самостоятельно в панели администратора.
• page-attributes — отображает атрибуты страницы, например порядок записей. Используется редко, видел использование всего раз в одном шаблоне, там это было действительно необходимо.
• post-formats — добавляет форматы страницы, при необходимости в дальнейшем я расскажу о них.
hierarchical — включает и отключает пользовательскую иерархию. Пока нам этот пункт не понадобится.
public — определяет видимость пользовательского типа записи в панели администратора и в клиентской части.
menu_position — обозначает позицию произвольного типа в панели администратора.
show_ui — скрывает новый тип в панели администратора, как в меню, так и в админбаре. Работать с типом можно но только по средствам кода.
show_in_menu — скрывает новый тип только в пользовательском меню.
show_in_admin_bar — указываем отображать или не отображать произвольный тип в меню.
В пункте 2 нет подменю для нового типа данных.
menu_icon — показывает путь к иконке для меню
can_export — возможность экспортировать данные произвольного типа данных.
has_archive — выводить данные в списке как архив (также как выводятся записи).
exclude_from_search — исключить этот тип данных из поиска.
publicly_queryable — возможность делать запросы с пользовательской части.
query_var — устанавливает ключ к этому типу, используется для запросов.
rewrite — настройка ссылок к новому типу.
capability_type — берем настройки прав из другого типа данных.
Урок немного затянулся, поэтому я решил разбить его на несколько уроков. Следите за курсом WordPress, скоро будут новые уроки.

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.