Пользовательские типы записей WordPress (Custom Post Types)

Автор: | 11.04.2019

Эта статья научит вас, как реализовать пользовательские типы записей WordPress. Знание того, как создавать пользовательские типы записей WordPress с нуля, открывает дверь к огромным возможностям не только для вас как разработчика, но и для ваших клиентов.

GenerateWP

Кастомные (пользовательские) записи – записи, которые генерируются в консоли wp конкретно под определённый сайт.

Существует сайт под названием GenerateWP (https://generatewp.com), и он предоставляет графический интерфейс, который поможет вам сделать много разных интересных вещей в WordPress. В том числе с его помощью можно создать пользовательские типы записей WordPress.

Пользовательские типы записей WordPress (Custom Post Types)

Зайдем во вкладку Post Type Generator и выберем подряд следующие вкладки, которые нужно настраивать под себя:

  • General
  • Post Type
  • Labels
  • Options
  • Visibility
  • Query
  • Permalinks
  • Capabilities
  • Rest API

Допустим, мы хотим создать пользовательскую запись «домашние животные» или «pets».

Заходим по порядку сначала в General, задаем имя будущей функции pets. Нажимаем Update Code и видим, что в коде ниже поменялось имя функции:

Пользовательские типы записей WordPress (Custom Post Types)

И далее также пройдитесь по всем пунктам.

Хочу заметить, что во вкладке Visibility пункт Admin Sidebar Icon можно заполнить используя данные сайта developer.wordpress.org/resource/dashicons/#universal-access. Это иконка, которая появится возле вашей записи в админ-панели.

rel="nofollow"

Весь полученный внизу массив — функцию скопировать.

Пользовательские типы записей WordPress (Custom Post Types)

Затем добавим то, что получилось в functions.php и можем оценить результаты, в админ-панели должна появиться ваша запись.

Пользовательские типы записей WordPress (Custom Post Types)

Разбор кода

Давайте разберем немного сам код.

Первая часть кода объявляет функцию или дает нашей функции имя:

// 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 «.

Пользовательские типы записей WordPress (Custom Post Types)

Экспериментируйте, пробуйте, проверяйте – это самый простой способ понять принцип создания пользовательских типов записей с помощью 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 вы можете удвоить мощность своего сайта. Эти знания, наряду с возможностью создания пользовательских таксономий, даст вам возможность работать с большими,  интересными веб-сайтами.

Правильное подключение скриптов и стилей в WordPress
подключение скриптов и стилей

Если вы веб-разработчик и создаете веб-сайты с помощью HTML и Read more

Как использовать функцию WP_Query
Как использовать функцию WP_Query

Понимание того, как использовать функцию wp_query может поднять ваши навыки Read more

Пользовательские Таксономии В WordPress
Пользовательские Таксономии В WordPress

В моей последней статье я писала о создании пользовательских типов Read more

Создание темы WordPress — functions.php
Создание темы WordPress - functions.php

functions.php файл шаблона функций в WordPress действительно является двигателем вашей Read more

Создание темы WordPress – 404.php, Search.php, and Searchform.php
Создание темы WordPress – 404.php, Search.php, and Searchform.php

Сегодня мы поговорим о еще трех файлах, которые, если их Read more

Создание темы WordPress – archive.php, category.php и tag.php
Создание темы WordPress – archive.php, category.php и tag.php

Сегодня речь пойдет об архивах записей, а точнее о файлах  Read more

Пользовательские типы записей WordPress (Custom Post Types): 2 комментария

  1. Вадим

    Спасибо большое. Очень легко и просто добавил все что нужно по Вашей статье. Остальные как-то одна вода или мутно. Спасибо

    1. wpmaster Автор записи

      Спасибо Вам за обратную связь) Приятно, что статья приносит пользу!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

десять + 17 =