Эта статья научит вас, как реализовать пользовательские типы записей WordPress. Знание того, как создавать пользовательские типы записей WordPress с нуля, открывает дверь к огромным возможностям не только для вас как разработчика, но и для ваших клиентов.
GenerateWP
Кастомные (пользовательские) записи – записи, которые генерируются в консоли wp конкретно под определённый сайт.
Существует сайт под названием GenerateWP (https://generatewp.com), и он предоставляет графический интерфейс, который поможет вам сделать много разных интересных вещей в WordPress. В том числе с его помощью можно создать пользовательские типы записей WordPress.
Зайдем во вкладку Post Type Generator и выберем подряд следующие вкладки, которые нужно настраивать под себя:
- General
- Post Type
- Labels
- Options
- Visibility
- Query
- Permalinks
- Capabilities
- Rest API
Допустим, мы хотим создать пользовательскую запись «домашние животные» или «pets».
Заходим по порядку сначала в General, задаем имя будущей функции pets. Нажимаем Update Code и видим, что в коде ниже поменялось имя функции:
И далее также пройдитесь по всем пунктам.
Хочу заметить, что во вкладке Visibility пункт Admin Sidebar Icon можно заполнить используя данные сайта developer.wordpress.org/resource/dashicons/#universal-access. Это иконка, которая появится возле вашей записи в админ-панели.
Весь полученный внизу массив — функцию скопировать.
Затем добавим то, что получилось в functions.php и можем оценить результаты, в админ-панели должна появиться ваша запись.
Разбор кода
Давайте разберем немного сам код.
Первая часть кода объявляет функцию или дает нашей функции имя:
// Register Custom Post Type function custom_post_type() { $labels = array( 'name' => _x( 'Post Types', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Post Type', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Post Type', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), );
Где custom_post_type () вы просто замените тем именем, которое вы хотите ему дать, например, custom_post_type_pets(). Постарайтесь быть конкретными с именами, которые вы даете функции. Если вы используете дочернюю тему или у вас установлено много плагинов, вы не хотите называть ее тем, что уже может быть использовано. Некоторые разработчики рекомендуют добавить свои инициалы в начало имени, чтобы убедиться, что не будет конфликта.
Далее мы видим объявление $labels. Здесь мы создаем массив и устанавливаем его равным переменной, называемой labels. В этом массиве мы рассказываем WordPress, что следует использовать в областях панели мониторинга этого нового пользовательского типа сообщения. Первый элемент массива — это имя. Здесь мы расскажем WordPress, что такое пользовательский тип сообщения. В моем примере я использовала «Домашние животные». Следующее поле в массиве-сингулярное имя. Это будет ‘Домашние животные’ или ваша версия. Название очень важно, потому что это то, что вы будете читать в левом боковом меню на приборной панели. Поиграйте с этими метками, а затем перейдите на панель управления и посмотрите, что меняется.
$args = array( 'label' => __( 'post_type', 'text_domain' ), 'description' => __( 'Post Type Description', 'text_domain' ), 'labels' => $labels, 'supports' => array( ), 'taxonomies' => array( 'category', 'post_tag' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'post_type', $args );
Далее следует изложение аргументов. Снова у нас есть массив и мы устанавливаем его равным переменной args. $args-очень распространенная переменная в WordPress. Первый элемент в массиве очень важен.
«label», которую не следует путать с метками, которые мы только что создали, — это пользовательский тип записи. Я использовала «Домашние животные» .
Не беспокойтесь о ‘description’, хотя вы можете добавить его и посмотреть, что он делает. Затем вы снова увидите «labels», где мы теперь использовали переменную $labels для вызова массива, который мы создаем выше. Я не буду рассматривать каждый элемент, который находится в этом массиве, но есть несколько, которые довольно важны.
Первое — «supports», которое принимает массив элементов. Этот массив сообщает WordPress, какие стандартные элементы вы хотите видеть на странице нового пользовательского типа сообщения. Здесь вы должны ввести значения в массив. Эти параметры выбирают на вкладке «Options «.
Экспериментируйте, пробуйте, проверяйте – это самый простой способ понять принцип создания пользовательских типов записей с помощью generatewp.
Наконец, вы должны зарегистрировать свой новый тип записи, который является последним фрагментом кода. Убедитесь, что вы изменили «post_type» тем именем, которое вы ввели в поле «label».
register_post_type( ‘post_type’, $args );
Ничего из этого не будет работать, если вы не добавите это действие в функцию init с помощью кода ниже. Введите имя вашей функции вместо «custom_post_type».
add_action( ‘init’, ‘custom_post_type’, 0 );
Вот так должен выглядеть код для создания пользовательских записей в файле functions.php
<?php // Register Custom Post Type function custom_post_type_pets() { $labels = array( 'name' => 'Домашние животные', 'singular_name' => 'Домашние животные', 'menu_name' => 'Домашние животные', 'add_new_item' => 'добавить новую', 'add_new' => 'добавить новую', 'new_item' => 'новая', 'edit_item' => 'редактировать', 'update_item' => 'обновить', 'view_item' => 'просмотреть все', 'view_items' => 'просмотр', 'search_items' => 'поиск', 'not_found' => 'Not found', 'not_found_in_trash' => 'Not found in Trash', ); $rewrite = array( 'slug' => 'pets', 'with_front' => true, 'pages' => false, 'feeds' => false, ); $args = array( 'label' => 'Домашние животные', 'description' => 'Post Type Description', 'labels' => $labels, 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', ), 'taxonomies' => array( 'category', 'post_tag' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 6, 'menu_icon' => 'dashicons-nametag', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => true, 'query_var' => 'foto', 'publicly_queryable' => true, 'rewrite' => $rewrite, ); register_post_type( 'pets', $args ); $labels = array( 'name' => 'Рубрики Домашние животные', 'singular_name' => 'Рубрика', 'menu_name' => 'Рубрика Домашние животные', ); $args = array( 'labels' => $labels, 'public' => true, 'show_in_nav_menus' => true, 'show_admin_column' => false, 'hierarchical' => false, 'show_tagcloud' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'query_var' => true, 'capabilities' => array(), ); register_taxonomy( 'service-cat', array( 'pets' ), $args ); } add_action( 'init', 'custom_post_type_pets', 0 );
Далее нам нужно поговорить о «таксономиях». В этом массиве можно использовать стандартные категории и теги или создавать пользовательские таксономии. В следующей статье я покажу вам, как создать пользовательские таксономии, чтобы помочь вам расширить пользовательские типы сообщений WordPress.
С возможностью создания пользовательских типов сообщений WordPress вы можете удвоить мощность своего сайта. Эти знания, наряду с возможностью создания пользовательских таксономий, даст вам возможность работать с большими, интересными веб-сайтами.
Спасибо большое. Очень легко и просто добавил все что нужно по Вашей статье. Остальные как-то одна вода или мутно. Спасибо
Спасибо Вам за обратную связь) Приятно, что статья приносит пользу!