get_post_types()
Отримує дані (об’єкти) зареєстрованих типів записів. Чи не самі записи, а дані реєстрації типу запису.
Можна фільтрувати висновок за багатьма критеріями.
1 раз – -0.00003 сек
(швидкість світла) | 50000 разів – 0.24 сек
(дуже швидко) |
PHP 7.4.8, WP 5.6.2
Хуків немає.
Повертає
Строку[]|WP_Post_Type[]
. Список назв типів записів або масив об’єктів (висновок налаштовується у параметрі $output
).
Використання
get_post_types ($ args, $ output, $ operator);
-
$args
(масив) Масив критеріїв, за якими буде обрано типи записів. Значення кожного параметра дивіться в описі функції register_post_type() .
- 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’
Приклади
#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 */
#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 */
#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
:
$post_types = get_post_types( [ 'name'=>'property' ], 'objects' ); foreach ( $post_types as $post_type ) { echo '<p>'. $post_type->name . '</p>'; }
#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 ); }