Функция get_post_types() в WordPress: работа, применение, примеры

# Функция 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *