get_post_types

Возвращает существующие (зарегистрированные) типы записей. Можно фильтровать вывод по множеству критериев.

✈ 1 раз = 0.00008с = очень быстро | 50000 раз = 0.4с = очень быстро

Хуков нет.

Возвращает

Массив. Список названий типов записей или массив объектов (вывод настраивается в параметре $output).

Использование

get_post_types( $args, $output, $operator );
$args(массив)

Массив критериев, по которым будут выбраны типы записей. Значение каждого параметра смотрите в описании функции register_post_type().

  • label
  • singular_label
  • description
  • public – Логический, если true, то выбраны будут только публичные типы записей (см. описание register_post_type()).
  • publicly_queryable
  • exclude_from_search
  • show_ui
  • capability_type
  • edit_cap
  • edit_type_cap
  • edit_others_cap
  • publish_others_cap
  • read_cap
  • delete_cap
  • hierarchical
  • supports
  • register_meta_box_cb
  • taxonomies
  • menu_position
  • menu_icon
  • permalink_epmask
  • rewrite
  • query_var
  • _builtin – Логический. Если true, то будут возвращены типы записей ВП по-умолчанию (posts) и наоборот: false — вернет только произвольные типы записей.
  • _edit_link
    По умолчанию: предустановки
$output(строка)

Как выводить результат. Возможны 2 варианта:

  • names— будет возвращен массив имен;
  • objects — будет возвращен массив объектов с данными типа записи.
    По умолчанию: ‘names’
$operator(строка)
Оператор сравнения для указанных критериев. Может быть: ‘and’ и ‘or’
По умолчанию: ‘and’

Примеры

#1. Обычное использование

Выведет зарегистрированные типы записей:

$post_types = get_post_types();

/* Вернет:
Array
(
	[post] => post
	[page] => page
	[attachment] => attachment
	[revision] => revision
	[nav_menu_item] => nav_menu_item
	[article] => article
	[question] => question
)
*/

#2. Выведем на экран список всех зарегистрированных типов записей:

$post_types = get_post_types('','names');

foreach( $post_types as $post_type ) {
  echo $post_type ."n";
}

/* Выведет:
post
page
attachment
revision
nav_menu_item
article
func
*/

#3. Выведем на экран список всех публичных, произвольных (созданных) типов записей:

$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // names or objects, note names is the default
$operator = 'and'; // 'and' or 'or'
$post_types=get_post_types( $args, $output, $operator );
foreach ($post_types  as $post_type ) {
	echo '<p>'. $post_type. '</p>';
}

#4. Пример, получение типа записи по названию

Здесь используется вывод в виде объекта данных (object). Выводим тип записи с названием property:

$args=array(
  'name' => 'property'
);

$output = 'objects';
$post_types=get_post_types($args, $output);
foreach ($post_types  as $post_type ) {
	echo '<p>' . $post_type->name . '</p>';
}

Заметки

Типы записей относящиеся к критерию _builtin:

  • post
  • page
  • mediapage
  • attachment
  • revision
  • nav_menu_item — с версии 3.0
  • custom post type — с версии 3.0

Код из


wp-includes/post.php

WP 4.7.2

<?php
function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) {
	global $wp_post_types;

	$field = ('names' == $output) ? 'name' : false;

	return wp_filter_object_list($wp_post_types, $args, $operator, $field);
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *