get_post_types() WP 2.9.0
Возвращает существующие (зарегистрированные) типы записей. Можно фильтровать вывод по множеству критериев.
1 раз = 0.000001с = скорость света | 50000 раз = 0.14с = очень быстро | PHP 7.1.11, WP 4.9.8
Хуков нет.
Возвращает
Массив. Список названий типов записей или массив объектов (вывод настраивается в параметре $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'
Примеры
#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>'; }
Заметки
- Global. Массив. $wp_post_types List of post types.
- Смотрите: register_post_type() for accepted arguments.
Список изменений
С версии 2.9.0 | Введена. |
Код get_post_types() get post types WP 5.6
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 );
}