# Функция GET_POST_TYPES() в WordPress
Функция get_post_types() позволяет получать данные о зарегистрированных типах записей в WordPress. Обратите внимание, что это не сами записи, а информация о типах записей.
## Как работает функция
Вы можете фильтровать вывод, используя несколько критериев. Функция использует wp_filter_object_list() для фильтрации данных.
**Производительность**:
- 1 раз — -0.00003 сек (практически мгновенно)
- 50 000 раз — 0.24 сек (очень быстро)
**Совместимость**: PHP 7.4.8, WP 5.6.2
**Хуки**: Отсутствуют.
## Возвращаемые значения
Функция возвращает массив, содержащий строки с именами типов записей или объекты типов записей.
```php
String[]|WP_Post_Type[]; // Массив имен типов записей или объектов типов записей
Применение функции
Синтаксис функции:
get_post_types( $args, $output, $operator );
Параметры
-
$args (array): Массив критериев для выбора типов записей. Например, вы можете указать различные параметры, такие как:
name— имя типа (например, "page")public— логическое значение, если истинно, будут выбраны только публичные типы (см. описание функцииregister_post_type())hierarchical— указывает, имеет ли тип запись иерархическую структуру
Пример аргументов:
$args = [ 'name' => 'page', 'public' => true, 'hierarchical' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, // другие параметры… ]; -
$output (string): Определяет, как выводить результат. Доступны два значения:
'names'— возвращается массив имен.'objects'— возвращается массив объектов данных типов записей. (По умолчанию —'names'.)
-
$operator (string): Оператор сравнения для заданных критериев. Может быть:
'and''or'
По умолчанию —
'and'.
Примеры использования
Пример 1: Получение списка всех зарегистрированных типов записей
Выводит типы записей, которые зарегистрированы в системе:
$post_types = get_post_types();
foreach( $post_types as $post_type ) {
echo $post_type . "n";
}
Результат:
post
page
attachment
revision
nav_menu_item
article
question
Пример 2: Получение только публичных типов записей
Получите все публичные типы записей:
$post_types = get_post_types(['publicly_queryable' => 1]);
unset($post_types['attachment']); // удаляем тип "attachment"
// Вывод результата
print_r($post_types);
Результат:
Array
(
[post] => post
[page] => page
[custom_type1] => custom_type1
...
)
Пример 3: Вывод HTML-списка типов записей
$args = ['public' => true];
$post_types = get_post_types($args, 'objects');
?>
Пример 4: Получение массива типов записей
Вы можете использовать функцию для получения массива с типами записей:
function get_post_types_array() {
$post_types = get_post_types([], 'objects');
$posts = [];
foreach ($post_types as $post_type) {
$posts[$post_type->name] = $post_type->labels->singular_name;
}
return $posts;
}
$post_types_array = get_post_types_array();
print_r($post_types_array);
Примечания
- Глобальная переменная:
$wp_post_types— список типов записей. - Для получения списка допустимых аргументов смотрите функцию
register_post_type().
Изменения
Функция была введена в версии 2.9.0.