Добавляю новый раздел на сайт по натяжным потолкам

Дневник разработчика

Сегодня мне понадобилось вывести в админке сайта отдельный тип постов. Решил под это дело написать статью и сохранить на будущее. что бы потом не собирать информацию по просторам интернета и быстренько повторить проделанное ранее. Статью на общую тему опубликую тут, а инструкции по процессу создания произвольного типа постов размещу в отдельной публикации.

Для какого сайта добавляем произвольный тип записей

Сайт заказчика посвящён натяжным потолкам. Это довольно популярная тема и сайты я в этой нише уже делал. Правда все они были одностраничными — т е под показ в рекламе. для сбора заявок.

Теперь ситуация иная. Сайт составной и описать его функционал парой слов уже не получится. Для начала главная страница сайта выполнена в формате Landing Page. Это был наш совместный хитрый шаг. Мы с заказчиком захотели совместить продающие свойства Лендинга и функционал интернет магазина. Что из этого получилось можете увидеть по ссылке на сайт заказчика: Кубань потолок.

Для чего я добавляю произвольный тип записей на сайт

Сайт заказчика условно можно разделить на:

  1. Лендинг
  2. Каталог готовых решений
  3. Статьи
  4. Интернет-магазин

В будущем я бы не хотел что бы заказчик тратил много времени на поиск страниц или статей из общего списка, как это сделано по умолчанию в WordPress. Поэтому решил вывести все виды потолков в отдельный пункт в административной панели. Это будет удобно и понятно.

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

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

/* Добавляю новый тип постов  */
add_action( 'init', 'register_post_types' );
function register_post_types(){
	register_post_type( 'ceilings', [
		'label'  => null,
		'labels' => [
			'name'               => 'Потолки',
			'singular_name'      => 'Потолок',
			'add_new'            => 'Добавить потолок',
			'add_new_item'       => 'Добавление потолка',
			'edit_item'          => 'Редактирование потолка',
			'new_item'           => 'Новый потолок', 
			'view_item'          => 'Смотреть потолок',
			'search_items'       => 'Искать потолок',
			'not_found'          => 'Не найдено', 
			'not_found_in_trash' => 'Не найдено в корзине',
			'parent_item_colon'  => '',
			'menu_name'          => 'Потолки',
		],
		'description'         => 'Готовые решения по натяжным потолкам',
		'public'              => true,
		// 'publicly_queryable'  => null,
		// 'exclude_from_search' => null,
		// 'show_ui'             => null,
		// 'show_in_nav_menus'   => null,
		'show_in_menu'        => true,
		// 'show_in_admin_bar'   => null,
		'show_in_rest'        => null,
		'rest_base'           => null,
		'menu_position'       => 6,
		'menu_icon'           => 'dashicons-nametag',
		//'capability_type'   => 'post',
		//'capabilities'      => 'post',
		//'map_meta_cap'      => null,
		'hierarchical'        => true,
		'supports'            => [ 'title','editor','thumbnail','excerpt','custom-fields','comments','revisions','page-attributes','post-formats' ],
		'taxonomies'          => [],
		'has_archive'         => true,
		'rewrite'             => true,
		'query_var'           => true,
	] );
}

После чего смотрим как выглядит наше детище в админке

Добавляю новый раздел на сайт по натяжным потолкам

Отлично. тут у нас все как нужно. Теперь нам следует добавить привычный мне редактор Gutenberg, что бы заказчик мог добавлять галереи и примеры работ, а так же выводить сопутствующие товары из магазина прям в записи.

Для включения гутенберга мы просто пропишем в шаблоне функции нашего типа записи следующую настройку 'show_in_rest'        => true,

Добавляю новый раздел на сайт по натяжным потолкам
Эта опция активирует gutenberg для произвольного типа записи.

Замечательно. Теперь нам необходимо включить дополнительный функционал, который реализован в теме сайта:

Настройки главного изображения записи

Опции выборочного отключения элементов на странице записи.

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

/* Включение настроек отображения главной картинки записи */
add_action( 'bono_metabox_thumbnail_post_type', function() {

  return [ 'post', 'page', 'ceilings' ];
 
 } );
/* включение опций выборочного отключения элементов на странице записи */
 add_action( 'bono_metabox_hide_elements_post_type', function() {

  return [ 'post', 'page', 'ceilings' ];
 
 } );

Юрий Ронин