get_post_types() WP 2.9.0

Отримує дані (об’єкти) зареєстрованих типів записів. Чи не самі записи, а дані реєстрації типу запису.

Можна фільтрувати висновок за багатьма критеріями.

Хуків немає.

Повертає

Строку[]|WP_Post_Type[]. Список назв типів записів або масив об’єктів (висновок налаштовується у параметрі $output).

Використання

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

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

name => page
label => Сторінки
labels => stdClass Object()
description =>
public => 1
hierarchical => 1
exclude_from_search =>
publicly_queryable =>
show_ui => 1
show_in_menu => 1
show_in_nav_menus => 1
show_in_admin_bar => 1
menu_position => 20
menu_icon =>
capability_type => page
map_meta_cap => 1
register_meta_box_cb =>
taxonomies => Array()
has_archive =>
query_var =>
can_export => 1
delete_with_user => 1
_builtin => 1
_edit_link => post.php?post=%d
cap => stdClass Object(
	edit_post => edit_page
	read_post => read_page
	delete_post => delete_page
	edit_posts => edit_pages
	edit_others_posts => edit_others_pages
	publish_posts => publish_pages
	read_private_posts => read_private_pages
	read => read
	delete_posts => delete_pages
	delete_private_posts => delete_private_pages
	delete_published_posts => delete_published_pages
	delete_others_posts => delete_others_pages
	edit_private_posts => edit_private_pages
	edit_published_posts => edit_published_pages
	create_posts => edit_pages
)

rewrite =>
show_in_rest => 1
rest_base => pages
rest_controller_class => WP_REST_Posts_Controller
  • name
  • 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, то буде повернуто вбудовані типи записів WP: page, posts… false — поверне лише нові типи записів.

    Типи записів стосовно критерію _builtin:

    • post
    • page
    • mediapage
    • attachment
    • revision
    • nav_menu_item – з версії 3.0
    • custom post type – з версії 3.0
  • _edit_link

За замовчуванням: попереднє встановлення

$output
(рядок)

Як виводити результат. Можливі 2 варіанти:

  • names– Повернеться масив імен;
  • objects– Повернеться масив об’єктів з даними типу запису.
    За замовчуванням: ‘names’
$operator
(рядок)
Оператор порівняння для зазначених критеріїв. Можливо: ‘and’ і ‘or’.


За замовчуванням: ‘and’

Приклади

0

#1 Виведемо на екран список назв усіх зареєстрованих типів записів

Виведе зареєстровані типи записів:

$post_types = get_post_types();

/* $post_types =
Array (
	[post] => post
	[page] => page
	[attachment] => attachment
	[revision] => revision
	[nav_menu_item] => nav_menu_item
	[article] => article
	[question] => question
)
*/

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

/* Виведе:
post
page
attachment
revision
nav_menu_item
article
func
*/
0

#2 Виведемо на екран список типів записів, що мають сторінку у форонті

Отримаємо всі типи записів.

$post_types = get_post_types(['publicly_queryable'=>1]);
$post_types['page'] = 'page'; // вбудований тип немає publicly_queryable
unset( $post_types['attachment'] ); // видалимо attachment
/*
Array
	[post] => post
	[custom_type1] => custom_type1
	[custom_type2] => custom_type2
	[custom_type3] => custom_type3
	[page] => page
*/
0

#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>';
}
0

#4 Приклад отримання типу запису за назвою

Тут використовується висновок як об’єкт даних (object). Виводимо тип запису з назвою property:

$post_types = get_post_types( [ 'name'=>'property' ], 'objects' );

foreach ( $post_types as $post_type ) {
	echo '<p>'. $post_type->name . '</p>';
}
0

#5 Отримаємо всі типи записів, які використовуються у REST API

$rest_ptypes = get_post_types( [ 'show_in_rest' => true ], 'names' );

print_r ($ rest_ptypes);

/*
Array
(
	[post] => post
	[page] => page
	[attachment] => attachment
	[nav_menu_item] => nav_menu_item
	[wp_block] => wp_block
	[wp_template] => wp_template
	[wp_template_part] => wp_template_part
	[wp_navigation] => wp_navigation
	[func] => func
	[handbook] => handbook
	[hook] => hook
	[note] => note
	[plug] => plug
)
*/

нотатки

  • Global. Масив. $wp_post_types List of post types.
  • Дивіться register_post_type() for accepted arguments.

список змін

З версії 2.9.0Введено.

get post types WP 6.0.2

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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *