get_post_type_object()

Извлекает объект типа записи по его имени
Функция WordPress
INT 3.0.0
WordPress Icon

Описание функции

Функция get_post_type_object() возвращает объект типа записи по его имени.

Она используется для получения информации о зарегистрированном типе записи, такой как название, метки, настройки и другие свойства.

Использование

get_post_type_object( string $post_type ): WP_Post_Type|null

Эта функция принимает один обязательный параметр:

  • $post_type (string) — Название зарегистрированного типа записи.

Функция возвращает объект типа WP_Post_Type если он существует, в противном случае возвращает null.

<?php
$post_type = 'book'; // Название типа записи
// Получаем объект типа записи
$post_type_object = get_post_type_object( $post_type );
// Выводим информацию о типе записи
if ( $post_type_object ) {
    echo 'Название: ' . $post_type_object->labels->name;
    echo 'Метка: ' . $post_type_object->labels->singular_name;
    echo 'Публичный: ' . $post_type_object->public;
} else {
    echo 'Тип записи не найден.';
}
?>

В этом примере мы получаем объект типа записи с названием «book» и выводим его информацию, такую как название, метка и публичность.

Примеры использования

Получение объекта типа записи по имени


$post_type = 'post';
$post_type_object = get_post_type_object($post_type);

В данном примере мы получаем объект типа записи с именем «post» с помощью функции get_post_type_object(). Результатом выполнения функции будет объект класса WP_Post_Type, представляющий тип записи «post».

Проверка существования объекта типа записи


$post_type = 'page';
$post_type_object = get_post_type_object($post_type);
if ($post_type_object) {
    echo 'Объект типа записи существует.';
} else {
    echo 'Объект типа записи не существует.';
}

В этом примере мы проверяем существование объекта типа записи с именем «page» с помощью функции get_post_type_object(). Если объект существует, то выводится сообщение «Объект типа записи существует.», в противном случае выводится сообщение «Объект типа записи не существует.»

Получение метаданных объекта типа записи


$post_type = 'product';
$post_type_object = get_post_type_object($post_type);
$labels = $post_type_object->labels;
$name = $labels->name;
$singular_name = $labels->singular_name;
echo 'Название типа записи: ' . $name;
echo 'Единственное название типа записи: ' . $singular_name;

В данном примере мы получаем метаданные объекта типа записи с именем «product» с помощью функции get_post_type_object(). Затем мы получаем доступ к свойству labels объекта типа записи и выводим название типа записи и его единственное название.

Изменение свойств объекта типа записи


$post_type = 'book';
$post_type_object = get_post_type_object($post_type);
$post_type_object->public = false;
$post_type_object->show_in_rest = true;
$post_type_object->labels->name = 'Books';
$post_type_object->labels->singular_name = 'Book';
$post_type_object->rewrite['slug'] = 'books';
$post_type_object->supports = array('title', 'editor', 'thumbnail');
$post_type_object->register_meta_box_cb = 'my_custom_meta_box';
function my_custom_meta_box() {
    // Код для вывода пользовательского метабокса
}
$post_type_object->register_taxonomy = 'genre';
register_post_type($post_type, (array) $post_type_object);

В этом примере мы получаем объект типа записи с именем «book» с помощью функции get_post_type_object(). Затем мы изменяем различные свойства объекта типа записи, такие как public, show_in_rest, labels, rewrite, supports, register_meta_box_cb и register_taxonomy. В конце мы регистрируем тип записи с помощью функции register_post_type().

Получение списка записей определенного типа


$post_type = 'event';
$post_type_object = get_post_type_object($post_type);
$args = array(
    'post_type' => $post_type,
    'posts_per_page' => 5
);
$query = new WP_Query($args);
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        the_title();
    }
    wp_reset_postdata();
} else {
    echo 'Записей не найдено.';
}

В этом примере мы получаем список записей определенного типа, в данном случае «event», с помощью класса WP_Query. Мы задаем параметры запроса в массиве $args, включая тип записи и количество записей на странице. Затем мы выполняем запрос с помощью метода have_posts() и выводим заголовок каждой записи с помощью функции the_title(). В конце мы сбрасываем данные запроса с помощью функции wp_reset_postdata().

Вопросы и ответы

Как получить объект типа записи по его имени?

Функция get_post_type_object() позволяет получить объект типа записи по его имени. Для этого необходимо передать имя зарегистрированного типа записи в качестве параметра.

Пример использования:


$post_type = 'post';
$post_type_object = get_post_type_object( $post_type );

Как проверить существование объекта типа записи по его имени?

Для проверки существования объекта типа записи по его имени можно использовать функцию get_post_type_object() и проверить возвращаемое значение на равенство null.

Пример использования:


$post_type = 'page';
$post_type_object = get_post_type_object( $post_type );
if ( $post_type_object === null ) {
    echo 'Объект типа записи не существует';
} else {
    echo 'Объект типа записи существует';
}

Как получить свойства объекта типа записи?

Получить свойства объекта типа записи можно, обратившись к его свойствам. Например, для получения названия типа записи можно использовать свойство name.

Пример использования:


$post_type = 'post';
$post_type_object = get_post_type_object( $post_type );
if ( $post_type_object !== null ) {
    $post_type_name = $post_type_object->name;
    echo 'Название типа записи: ' . $post_type_name;
}

Как изменить свойства объекта типа записи?

Функция get_post_type_object() возвращает объект типа записи по его имени. Но что делать, если мы хотим изменить свойства этого объекта? В таком случае нам понадобится использовать функцию register_post_type().

Функция register_post_type() позволяет зарегистрировать новый тип записи или изменить свойства существующего типа. Она принимает массив параметров, в котором можно указать различные настройки для типа записи.

Например, чтобы изменить свойство «public» (отвечает за доступность типа записи на сайте), мы можем использовать следующий код:


$args = array(
    'public' => false
);
register_post_type( 'post', $args );

В этом примере мы изменяем свойство «public» для типа записи «post» на значение «false», что означает, что тип записи будет недоступен на сайте.

Как получить список всех зарегистрированных типов записей?

Иногда нам может понадобиться получить список всех зарегистрированных типов записей. Для этого мы можем использовать функцию get_post_types().

Функция get_post_types() возвращает массив, содержащий все зарегистрированные типы записей. Мы можем использовать этот массив для дальнейшей обработки или вывода информации.

Например, чтобы вывести список всех зарегистрированных типов записей, мы можем использовать следующий код:


$post_types = get_post_types();
foreach ( $post_types as $post_type ) {
    echo $post_type . '<br>';
}

В этом примере мы получаем массив всех зарегистрированных типов записей с помощью функции get_post_types() и выводим их на экран с помощью цикла foreach.

Как получить список всех свойств объекта типа записи?

Если нам нужно получить список всех свойств объекта типа записи, мы можем воспользоваться функцией get_post_type_object().

Функция get_post_type_object() возвращает объект типа записи по его имени. Мы можем использовать этот объект для получения информации о свойствах типа записи.

Например, чтобы получить список всех свойств типа записи «post», мы можем использовать следующий код:


$post_type_object = get_post_type_object( 'post' );
$properties = get_object_vars( $post_type_object );
foreach ( $properties as $property => $value ) {
    echo $property . ': ' . $value . '<br>';
}

В этом примере мы получаем объект типа записи «post» с помощью функции get_post_type_object() и используем функцию get_object_vars() для получения всех свойств объекта. Затем мы выводим список свойств и их значений на экран с помощью цикла foreach.

Как добавить новый тип записи?

Для добавления нового типа записи в WordPress используется функция register_post_type(). Эта функция принимает массив параметров, в котором указываются все необходимые настройки для нового типа записи, такие как название, метки, возможность редактирования и т.д.


function create_custom_post_type() {
    $args = array(
        'labels' => array(
            'name' => 'Custom Post Type',
            'singular_name' => 'Custom Post',
        ),
        'public' => true,
        'has_archive' => true,
    );
    register_post_type( 'custom_post_type', $args );
}
add_action( 'init', 'create_custom_post_type' );

Как удалить тип записи?

Для удаления типа записи в WordPress используется функция unregister_post_type(). Эта функция принимает один параметр — название типа записи, который нужно удалить.


function remove_custom_post_type() {
    unregister_post_type( 'custom_post_type' );
}
add_action( 'init', 'remove_custom_post_type' );

Как изменить название типа записи?

Для изменения названия типа записи в WordPress используется фильтр post_type_labels_{$post_type}. В этом фильтре можно изменить любые метки, связанные с типом записи, такие как название, метки публикации и т.д.


function change_custom_post_type_labels( $labels ) {
    $labels->name = 'New Custom Post Type';
    return $labels;
}
add_filter( 'post_type_labels_custom_post_type', 'change_custom_post_type_labels' );

Функция get_post_type_object() в WordPress позволяет получить объект типа записи по его названию. Она возвращает объект класса WP_Post_Type, который содержит информацию о типе записи, такую как название, метки, возможности редактирования и т.д. Эта функция очень полезна при работе с типами записей в WordPress, так как позволяет получить доступ к их настройкам и свойствам.

Связанные элементы

  • Функция get_post_type(): возвращает тип записи для указанного объекта записи.
  • Функция register_post_type(): регистрирует новый тип записи.
  • Функция get_post(): возвращает объект записи по указанному идентификатору.
  • Хук registered_post_type: вызывается после успешной регистрации нового типа записи.
  • Хук wp_insert_post_data: позволяет изменить данные перед сохранением записи в базу данных.
  • Хук wp_insert_post_empty_content: вызывается, если содержимое записи пустое перед сохранением.
  • Класс WP_Post_Type: представляет тип записи и содержит методы для работы с ним.
  • Класс WP_Post: представляет отдельную запись и содержит методы для работы с ней.
Обсуждение