Функция get_post_type_object()
в WordPress позволяет получить объект типа записи (post type) по его имени. Этот объект содержит все параметры и настройки, связанные с типом записи, что делает управление и настройку типов записей более удобным.
get_post_type_object( string $post_type )
Параметры
- $post_type (string) (Обязательный): Имя зарегистрированного типа записи. Это может быть стандартный тип записи, такой как
post
илиpage
, или пользовательский тип записи, который вы добавили.
Возвращаемое значение
Функция возвращает объект типа WP_Post_Type
, который содержит данные о типе записи. Если указанный тип записи не существует, функция вернет null
. Начиная с версии 4.6, возвращаемое значение является экземпляром класса WP_Post_Type
.
Пример 1: Получение локализованного названия типа записи
Чтобы получить название типа записи для отображения, вы можете использовать функцию get_post_type_object()
и обратиться к свойству labels
объекта:
// Получаем объект типа записи для 'post'
$obj = get_post_type_object('post');
// Выводим локализованное название типа записи
if ($obj) {
echo $obj->labels->singular_name;
}
Альтернативный способ получения того же результата с использованием глобального массива $wp_post_types
:
global $wp_post_types;
$obj = $wp_post_types['post'];
echo $obj->labels->singular_name;
Пример 2: Получение объекта пользовательского типа записи
Допустим, у вас есть пользовательский тип записи с именем book
. Вы можете получить объект этого типа записи и использовать его свойства.
// Получаем объект пользовательского типа записи 'book'
$book_post_type_object = get_post_type_object('book');
// Проверяем, существует ли объект типа записи
if ( $book_post_type_object ) {
echo 'Имя типа записи: ' . $book_post_type_object->name . '<br>';
echo 'Название для отображения: ' . $book_post_type_object->label . '<br>';
echo 'Описание: ' . $book_post_type_object->description . '<br>';
} else {
echo 'Тип записи не найден.';
}
Пример 3: Использование объекта типа записи в функции
Вы можете использовать объект типа записи для создания пользовательских метабоксов или для управления поведением типов записей.
function my_custom_meta_box() {
$post_type_object = get_post_type_object('book');
if ( $post_type_object ) {
add_meta_box(
'my_meta_box_id', // ID метабокса
'Мой метабокс', // Название метабокса
'my_meta_box_callback', // Функция обратного вызова
$post_type_object->name, // Тип записи
'side', // Контекст (место на экране)
'default' // Приоритет
);
}
}
add_action('add_meta_boxes', 'my_custom_meta_box');
function my_meta_box_callback() {
echo 'Содержимое моего метабокса';
}
Примечания
- Убедитесь, что указанный тип записи зарегистрирован, прежде чем вызывать функцию
get_post_type_object()
. В противном случае функция вернетnull
. - Функция
get_post_type_object()
полезна для получения информации о типах записей, что может пригодиться при разработке пользовательских интерфейсов и административных страниц.
Просмотр структуры объекта типа записи
$obj = get_post_type_object('post');
/* $obj будет содержать данные в следующем формате:
stdClass Object
(
[labels] => stdClass Object
(
[name] => Записи
[singular_name] => Запись
[add_new] => Добавить новую
[add_new_item] => Добавить запись
[edit_item] => Редактировать запись
[new_item] => Новая запись
[view_item] => Просмотреть запись
[search_items] => Поиск записей
[not_found] => Записей не найдено.
[not_found_in_trash] => Записей в корзине не найдено.
[parent_item_colon] =>
[all_items] => Все записи
[menu_name] => Записи
[name_admin_bar] => Запись
)
[description] =>
[public] => 1
[hierarchical] =>
[exclude_from_search] =>
[publicly_queryable] => 1
[show_ui] => 1
[show_in_menu] => 1
[show_in_nav_menus] => 1
[show_in_admin_bar] => 1
[menu_position] =>
[menu_icon] =>
[capability_type] => post
[map_meta_cap] => 1
[register_meta_box_cb] =>
[taxonomies] => Array
(
)
[has_archive] =>
[rewrite] =>
[query_var] =>
[can_export] => 1
[delete_with_user] => 1
[_builtin] => 1
[_edit_link] => post.php?post=%d
[name] => post
[cap] => stdClass Object
(
[edit_post] => edit_post
[read_post] => read_post
[delete_post] => delete_post
[edit_posts] => edit_posts
[edit_others_posts] => edit_others_posts
[publish_posts] => publish_posts
[read_private_posts] => read_private_posts
[read] => read
[delete_posts] => delete_posts
[delete_private_posts] => delete_private_posts
[delete_published_posts] => delete_published_posts
[delete_others_posts] => delete_others_posts
[edit_private_posts] => edit_private_posts
[edit_published_posts] => edit_published_posts
[create_posts] => edit_posts
)
[label] => Записи
)
*/
Заключение
Функция get_post_type_object()
является мощным инструментом в WordPress для работы с типами записей. Она предоставляет подробную информацию о каждом типе записи, что позволяет разработчикам эффективно настраивать и управлять контентом сайта.