- Описание класса
- Методы
- add_hooks()
- add_rewrite_rules()
- add_supports()
- get_default_labels()
- get_rest_controller()
- register_meta_boxes()
- register_taxonomies()
- remove_hooks()
- remove_rewrite_rules()
- remove_supports()
- reset_default_labels()
- set_props()
- unregister_meta_boxes()
- unregister_taxonomies()
- __construct()
- Примеры использования
- Создание нового типа записи
- Регистрация метабокса для типа записи
- Добавление поддержки функций для типа записи
- Регистрация таксономий для типа записи
- Удаление типа записи из таксономий
- Вопросы и ответы
- Как зарегистрировать новый тип записи в WordPress?
- Как добавить поддержку определенных функций для типа записи?
- Как удалить поддержку определенных функций для типа записи?
- Как добавить метабоксы для типа записи?
- Как удалить метабоксы для типа записи?
- Как зарегистрировать таксономии для типа записи?
- Как удалить таксономии для типа записи?
- Как изменить метки по умолчанию для типа записи?
- Как использовать REST API контроллер для типа записи?
Описание класса
Класс WP_Post_Type является ядром WordPress и используется для взаимодействия с типами записей. Он предоставляет методы для регистрации, удаления и настройки типов записей, а также для работы с метабоксами и таксономиями, связанными с типами записей.
Этот класс является наследником класса WP_Post и предоставляет дополнительные функциональные возможности для работы с типами записей.
Методы
__construct— Конструктор.add_hooks— Добавляет действие хука для будущей записи типа записи.add_rewrite_rules— Добавляет необходимые правила перезаписи для типа записи.add_supports— Устанавливает поддержку функций для типа записи.get_default_labels— Возвращает метки по умолчанию для типов записей.get_rest_controller— Получает контроллер REST API для этого типа записи.register_meta_boxes— Регистрирует метабокс типа записи, если был указан пользовательский обратный вызов.register_taxonomies— Регистрирует таксономии для типа записи.remove_hooks— Удаляет действие хука для будущей записи типа записи.remove_rewrite_rules— Удаляет все правила перезаписи, постоянные структуры и правила для типа записи.remove_supports— Удаляет поддержку функций для типа записи.reset_default_labels— Сбрасывает кэш для меток по умолчанию.set_props— Устанавливает свойства типа записи.unregister_meta_boxes— Отменяет регистрацию метабокса типа записи, если был указан пользовательский обратный вызов.unregister_taxonomies— Удаляет тип записи из всех таксономий.
Методы
add_hooks()
Метод add_hooks() класса WP_Post_Type используется для добавления действия хука будущей публикации для типа записи. Он позволяет задать функцию, которая будет выполнена перед публикацией записи указанного типа.
Данный метод является внутренним методом ядра WordPress и используется для взаимодействия с типами записей.
WP_Post_Type::add_hooks(); Метод add_hooks() не принимает никаких аргументов.
Данный код должен быть вызван в контексте класса WP_Post_Type или его наследника.
Метод add_hooks() добавляет действие хука future_{post_type} для указанного типа записи. Здесь {post_type} — это имя типа записи.
Действие хука future_{post_type} выполняется перед публикацией записи указанного типа. Вы можете задать свою функцию, которая будет выполнена в этом действии хука.
add_rewrite_rules()
Метод add_rewrite_rules() является частью класса WP_Post_Type и используется для добавления необходимых правил перезаписи для типа записи (post type) в WordPress.
Этот метод добавляет правила перезаписи, которые позволяют WordPress обрабатывать URL-адреса, связанные с определенным типом записи. Он определяет, какой шаблон должен быть использован для обработки запроса и какие данные должны быть извлечены из URL-адреса.
Метод add_rewrite_rules() обычно вызывается в хуке init для каждого типа записи, чтобы установить правила перезаписи при инициализации WordPress.
WP_Post_Type::add_rewrite_rules();
Вызов метода add_rewrite_rules() осуществляется через класс WP_Post_Type. Он не принимает аргументов.
Этот метод должен быть вызван в контексте типа записи, для которого вы хотите добавить правила перезаписи. Обычно он вызывается в хуке init для каждого типа записи, чтобы установить правила перезаписи при инициализации WordPress.
Метод add_rewrite_rules() добавляет правила перезаписи в глобальный массив $wp_rewrite, который затем используется WordPress для обработки URL-адресов. Правила перезаписи определяются с использованием регулярных выражений и указывают, какие данные должны быть извлечены из URL-адреса и какой шаблон должен быть использован для обработки запроса.
После вызова метода add_rewrite_rules() правила перезаписи будут доступны в WordPress для обработки URL-адресов, связанных с типом записи.
add_supports()
Метод add_supports() класса WP_Post_Type используется для установки поддержки функций для типа записи.
Метод устанавливает функции, которые будут поддерживаться для данного типа записи. Функции могут включать такие возможности, как загрузка изображений, редактирование автора, использование редактора контента и другие.
Метод принимает два параметра: $feature и $args. Параметр $feature определяет функцию, которую необходимо добавить в тип записи. Параметр $args содержит дополнительные аргументы для функции.
WP_Post_Type::add_supports( $feature, $args );
Метод add_supports() используется для добавления поддержки функций для типа записи.
Параметр $feature принимает строку, которая определяет функцию, которую необходимо добавить. Например, ‘title’ добавляет поддержку заголовка записи.
Параметр $args принимает массив с дополнительными аргументами для функции. Например, для функции ‘thumbnail’ можно указать размеры изображения.
get_default_labels()
Метод get_default_labels() класса WP_Post_Type возвращает массив с метками по умолчанию для типов записей.
Класс WP_Post_Type является основным классом для взаимодействия с типами записей в WordPress.
WP_Post_Type::get_default_labels(): (string|null)[][] Метод get_default_labels() не принимает никаких аргументов.
Он возвращает массив с метками по умолчанию для типов записей.
Метод get_default_labels() возвращает массив с метками по умолчанию для типов записей.
Массив имеет следующую структуру: (string|null)[][].
Каждый элемент массива представляет собой ассоциативный массив с метками для конкретного типа записи.
Метки включают в себя названия записей, единственное и множественное число, а также другие метки, связанные с типом записи.
get_rest_controller()
Метод get_rest_controller() класса WP_Post_Type возвращает контроллер REST API для данного типа записи. Контроллер REST API отвечает за обработку запросов к API для данного типа записи.
WP_Post_Type::get_rest_controller(): WP_REST_Controller|null Метод get_rest_controller() вызывается статически, используя имя класса WP_Post_Type. Он возвращает экземпляр класса WP_REST_Controller или null, если тип записи не установлен для отображения в REST API.
Метод get_rest_controller() возвращает экземпляр класса WP_REST_Controller или null, если тип записи не установлен для отображения в REST API.
register_meta_boxes()
Метод register_meta_boxes() является частью класса WP_Post_Type и используется для регистрации метабоксов (meta boxes) для определенного типа записи (post type) в WordPress.
Метабоксы — это блоки, которые отображаются на странице редактирования записи и позволяют добавлять и редактировать дополнительные метаданные для этой записи.
Метод register_meta_boxes() регистрирует метабоксы, если был указан пользовательский обратный вызов (callback). Обратный вызов определяет содержимое и поведение метабокса.
WP_Post_Type::register_meta_boxes();
Метод register_meta_boxes() вызывается статически, используя имя класса WP_Post_Type.
Этот метод не принимает никаких аргументов.
Он должен быть вызван в контексте хука add_meta_boxes, который запускается при загрузке страницы редактирования записи.
После вызова метода register_meta_boxes(), метабоксы будут зарегистрированы и отображены на странице редактирования записи для указанного типа записи.
register_taxonomies()
Метод register_taxonomies() класса WP_Post_Type используется для регистрации таксономий для типа записи.
Таксономии — это способ организации и классификации данных в WordPress. Они позволяют группировать записи по определенным категориям или тегам.
Метод register_taxonomies() регистрирует таксономии для указанного типа записи. Он вызывается при инициализации WordPress и должен быть вызван после регистрации типа записи с помощью метода register_post_type().
После регистрации таксономий, они становятся доступными для использования в административной панели WordPress и на сайте.
WP_Post_Type::register_taxonomies();
Метод register_taxonomies() не принимает никаких аргументов. Он вызывается статически, используя имя класса WP_Post_Type.
Этот метод должен быть вызван в файле функций темы или плагина, чтобы зарегистрировать таксономии для типа записи.
После вызова метода, таксономии будут доступны для использования в административной панели WordPress и на сайте.
remove_hooks()
Метод remove_hooks() класса WP_Post_Type используется для удаления действия хука «future_post» для указанного типа записи.
Хук «future_post» срабатывает при публикации записи с отложенной датой публикации. Метод remove_hooks() позволяет отключить это действие для определенного типа записи.
WP_Post_Type::remove_hooks(); Метод remove_hooks() не принимает никаких аргументов.
Данный код следует разместить в файле функций вашей темы или в плагине, чтобы выполнить удаление действия хука «future_post» для указанного типа записи.
После выполнения этого кода, хук «future_post» больше не будет срабатывать для указанного типа записи.
remove_rewrite_rules()
Метод remove_rewrite_rules() класса WP_Post_Type удаляет все правила перезаписи, постоянные структуры и правила для указанного типа записи.
Этот метод используется для удаления всех правил перезаписи, связанных с определенным типом записи. Он полезен, когда требуется удалить все правила перезаписи, связанные с определенным типом записи, например, при удалении типа записи или при изменении его настроек.
WP_Post_Type::remove_rewrite_rules(); Вызов метода remove_rewrite_rules() класса WP_Post_Type удаляет все правила перезаписи, постоянные структуры и правила для указанного типа записи.
Данный метод не принимает аргументов.
remove_supports()
Метод remove_supports() класса WP_Post_Type используется для удаления поддержки функциональности для типа записи.
Данный метод удаляет поддержку определенных функций (features) для указанного типа записи. Функциональность может включать такие возможности, как заголовок, редактор контента, миниатюру, архив и другие.
Метод принимает два параметра: $feature и $post_type. Параметр $feature представляет собой строку или массив строк, содержащих имена функций, которые нужно удалить. Параметр $post_type определяет тип записи, для которого нужно удалить поддержку функциональности.
Метод возвращает true, если поддержка функциональности успешно удалена, и false, если произошла ошибка.
WP_Post_Type::remove_supports( $feature, $post_type ); Где:
$feature— строка или массив строк с именами функций, которые нужно удалить.$post_type— тип записи, для которого нужно удалить поддержку функциональности.
Пример использования:
$post_type = 'book'; // тип записи "book"
$feature = 'thumbnail'; // удаление поддержки миниатюры
WP_Post_Type::remove_supports( $feature, $post_type ); В данном примере поддержка миниатюры будет удалена для типа записи «book».
reset_default_labels()
Метод reset_default_labels() класса WP_Post_Type используется для сброса кэша меток по умолчанию.
Класс WP_Post_Type является основным классом для взаимодействия с типами записей в WordPress.
WP_Post_Type::reset_default_labels(); Вызов метода reset_default_labels() позволяет сбросить кэш меток по умолчанию.
Этот метод не принимает никаких аргументов.
Метод работает следующим образом:
- Сбрасывает кэш меток по умолчанию.
Метод reset_default_labels() используется для обновления меток по умолчанию после изменения типа записи или его настроек.
set_props()
Метод set_props() класса WP_Post_Type используется для установки свойств типа записи.
Этот метод позволяет устанавливать различные свойства типа записи, такие как название, описание, публичность, поддержка функций и другие.
Метод set_props() является частью ядра WordPress и используется для взаимодействия с типами записей.
WP_Post_Type::set_props( array|string $args ) Метод set_props() принимает один обязательный аргумент $args, который может быть массивом или строкой. Аргумент $args содержит аргументы для регистрации типа записи.
Пример использования:
WP_Post_Type::set_props( array(
'label' => 'Название типа записи',
'description' => 'Описание типа записи',
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
// Другие свойства типа записи
) ); В приведенном примере мы устанавливаем некоторые свойства типа записи, такие как название, описание, публичность и поддержка функций. Вы можете добавить другие свойства в соответствии с вашими потребностями.
$args (array|string) — Обязательный. Массив или строка аргументов для регистрации типа записи.
<?php
/**
* Пример использования метода set_props()
*/
// Устанавливаем свойства типа записи
WP_Post_Type::set_props( array(
'label' => 'Название типа записи',
'description' => 'Описание типа записи',
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
// Другие свойства типа записи
) );
?> В приведенном примере мы используем метод set_props() для установки свойств типа записи. Мы устанавливаем название типа записи, описание, публичность и поддержку функций. Вы можете добавить другие свойства в соответствии с вашими потребностями.
unregister_meta_boxes()
unregister_meta_boxes() — это метод класса WP_Post_Type, который используется для отмены регистрации метабоксов (meta boxes) для типа записи (post type), если был указан пользовательский обратный вызов (callback).
Метод unregister_meta_boxes() отменяет регистрацию метабоксов, которые были зарегистрированы с помощью метода add_meta_box() или другими способами. Если при регистрации метабокса был указан пользовательский обратный вызов (callback), то он будет удален.
Метод unregister_meta_boxes() обычно используется, когда требуется удалить метабокс для определенного типа записи или при изменении поведения метабокса.
WP_Post_Type::unregister_meta_boxes(); Выше представлен пример кода, который использует метод unregister_meta_boxes() класса WP_Post_Type.
Метод unregister_meta_boxes() вызывается статически, используя имя класса WP_Post_Type и оператор двойного двоеточия ::.
Этот метод не принимает никаких аргументов.
Метод unregister_meta_boxes() отменяет регистрацию всех метабоксов для текущего типа записи, если они были зарегистрированы с помощью метода add_meta_box() или другими способами.
unregister_taxonomies()
Метод unregister_taxonomies() класса WP_Post_Type используется для удаления типа записи из всех таксономий.
WP_Post_Type::unregister_taxonomies();
Метод unregister_taxonomies() вызывается статически, без создания экземпляра класса WP_Post_Type. Он не принимает никаких аргументов.
Данный метод удаляет тип записи из всех таксономий, к которым он был привязан. Это означает, что после вызова метода, тип записи больше не будет отображаться в таксономиях и не будет участвовать в их навигации и фильтрации.
Метод полезен, когда требуется полностью исключить тип записи из таксономий, например, если тип записи был создан по ошибке или больше не нужен в контексте проекта.
__construct()
Метод «__construct()» является конструктором класса «WP_Post_Type» и используется для создания нового экземпляра класса. Он вызывается автоматически при создании нового объекта класса «WP_Post_Type».
WP_Post_Type::__construct( string $post_type, array|string $args = array() ) Метод «__construct()» принимает два параметра: $post_type (обязательный) и $args (необязательный). Параметр $post_type — это ключ типа записи, который должен быть зарегистрирован. Параметр $args — это массив или строка аргументов для регистрации типа записи.
$post_type (string) — Обязательный. Ключ типа записи, который должен быть зарегистрирован.
$args (array|string) — Необязательный. Массив или строка аргументов для регистрации типа записи. Смотрите функцию «register_post_type()» для получения информации о принимаемых аргументах. Больше аргументов из «register_post_type(… $args)». Аргументы регистрации типа записи. По умолчанию: array().
<?php
// Создание нового экземпляра класса "WP_Post_Type"
$post_type = new WP_Post_Type( 'book', array(
'labels' => array(
'name' => __( 'Books', 'text-domain' ),
'singular_name' => __( 'Book', 'text-domain' ),
),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'books' ),
) );
?> В приведенном выше примере создается новый экземпляр класса «WP_Post_Type» с ключом типа записи «book» и аргументами для регистрации типа записи. В этом примере используются следующие аргументы:
'labels': Массив меток для типа записи.'public': Определяет, должен ли тип записи быть доступным для публичного просмотра.'has_archive': Определяет, должен ли тип записи иметь архивную страницу.'rewrite': Определяет параметры перезаписи URL для типа записи.
Это только пример, и вы можете использовать другие аргументы в соответствии с вашими потребностями.
Примеры использования
Создание нового типа записи
// Создание нового типа записи
function create_custom_post_type() {
$args = array(
'public' => true,
'label' => 'Books'
);
$post_type = new WP_Post_Type( 'book', $args );
}
add_action( 'init', 'create_custom_post_type' );
В данном примере мы создаем новый тип записи «Books» с идентификатором «book». Параметр «public» установлен в true, что означает, что тип записи будет доступен для просмотра и редактирования в административной панели WordPress.
Регистрация метабокса для типа записи
// Регистрация метабокса для типа записи
function add_custom_meta_box() {
add_meta_box( 'book_meta_box', 'Book Details', 'display_custom_meta_box', 'book', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'add_custom_meta_box' );
// Отображение метабокса
function display_custom_meta_box( $post ) {
// Код для отображения полей метабокса
}
В данном примере мы регистрируем метабокс с идентификатором «book_meta_box» и названием «Book Details» для типа записи «book». Функция «display_custom_meta_box» будет вызываться для отображения содержимого метабокса.
Добавление поддержки функций для типа записи
// Добавление поддержки функций для типа записи
function add_custom_post_type_support() {
add_post_type_support( 'book', 'title' );
add_post_type_support( 'book', 'editor' );
add_post_type_support( 'book', 'thumbnail' );
}
add_action( 'init', 'add_custom_post_type_support' );
В данном примере мы добавляем поддержку функций «title», «editor» и «thumbnail» для типа записи «book». Это означает, что пользователи смогут редактировать заголовок, содержимое и изображение записей данного типа.
Регистрация таксономий для типа записи
// Регистрация таксономий для типа записи
function register_custom_taxonomies() {
$args = array(
'hierarchical' => true,
'label' => 'Genres'
);
register_taxonomy( 'genre', 'book', $args );
}
add_action( 'init', 'register_custom_taxonomies' );
В данном примере мы регистрируем таксономию «Genres» с идентификатором «genre» для типа записи «book». Параметр «hierarchical» установлен в true, что означает, что таксономия будет иерархической, то есть будет иметь родительские и дочерние термины.
Удаление типа записи из таксономий
// Удаление типа записи из таксономий
function remove_custom_post_type_from_taxonomies() {
unregister_taxonomy_for_object_type( 'genre', 'book' );
}
add_action( 'init', 'remove_custom_post_type_from_taxonomies' );
В данном примере мы удаляем тип записи «book» из таксономии «genre». После выполнения данного кода, тип записи «book» больше не будет связан с таксономией «genre».
Вопросы и ответы
Как зарегистрировать новый тип записи в WordPress?
Для регистрации нового типа записи в WordPress используется класс WP_Post_Type. Для этого нужно создать экземпляр этого класса и вызвать метод register_post_type(). Ниже приведен пример кода:
$my_post_type = new WP_Post_Type( 'my_post_type' );
$my_post_type->register_post_type();
Как добавить поддержку определенных функций для типа записи?
Для добавления поддержки определенных функций для типа записи используется метод add_supports(). Ниже приведен пример кода:
$my_post_type = new WP_Post_Type( 'my_post_type' );
$my_post_type->add_supports( 'title', 'editor', 'thumbnail' );
Как удалить поддержку определенных функций для типа записи?
Для удаления поддержки определенных функций для типа записи используется метод remove_supports(). Ниже приведен пример кода:
$my_post_type = new WP_Post_Type( 'my_post_type' );
$my_post_type->remove_supports( 'editor' );
Как добавить метабоксы для типа записи?
Для добавления метабоксов для типа записи в WordPress можно использовать метод register_meta_boxes класса WP_Post_Type. Этот метод регистрирует метабокс, если указан пользовательский обратный вызов.
function my_custom_meta_box_callback( $post ) {
// Ваш код обработки метабокса
}
add_action( 'add_meta_boxes', function() {
$post_type = 'my_post_type'; // Замените на свой тип записи
$post_type_object = get_post_type_object( $post_type );
if ( $post_type_object ) {
$post_type_object->register_meta_boxes( 'my_custom_meta_box_callback' );
}
} );
Как удалить метабоксы для типа записи?
Для удаления метабоксов для типа записи в WordPress можно использовать метод unregister_meta_boxes класса WP_Post_Type. Этот метод удаляет метабокс, если указан пользовательский обратный вызов.
function my_custom_meta_box_callback( $post ) {
// Ваш код обработки метабокса
}
add_action( 'add_meta_boxes', function() {
$post_type = 'my_post_type'; // Замените на свой тип записи
$post_type_object = get_post_type_object( $post_type );
if ( $post_type_object ) {
$post_type_object->unregister_meta_boxes( 'my_custom_meta_box_callback' );
}
} );
Как зарегистрировать таксономии для типа записи?
Для регистрации таксономий для типа записи в WordPress можно использовать метод register_taxonomies класса WP_Post_Type. Этот метод регистрирует таксономии для указанного типа записи.
add_action( 'init', function() {
$post_type = 'my_post_type'; // Замените на свой тип записи
$post_type_object = get_post_type_object( $post_type );
if ( $post_type_object ) {
$post_type_object->register_taxonomies();
}
} );
Как удалить таксономии для типа записи?
Для удаления таксономий для типа записи в WordPress можно воспользоваться методом unregister_taxonomy_for_object_type(). Этот метод позволяет удалить указанную таксономию из типа записи.
Пример кода:
function remove_taxonomies() {
unregister_taxonomy_for_object_type( 'category', 'post' );
unregister_taxonomy_for_object_type( 'post_tag', 'post' );
}
add_action( 'init', 'remove_taxonomies' );
Как изменить метки по умолчанию для типа записи?
Для изменения меток по умолчанию для типа записи в WordPress можно воспользоваться методом get_default_labels(). Этот метод возвращает массив с метками по умолчанию для указанного типа записи.
Пример кода:
function change_labels() {
$labels = get_default_labels();
$labels->name = 'Custom Post Type';
$labels->singular_name = 'Custom Post';
return $labels;
}
add_filter( 'wp_post_types', 'change_labels' );
Как использовать REST API контроллер для типа записи?
Для использования REST API контроллера для типа записи в WordPress можно воспользоваться методом get_rest_controller(). Этот метод возвращает контроллер REST API для указанного типа записи.
Пример кода:
function get_custom_post_type_controller() {
$post_type = get_post_type_object( 'custom_post_type' );
$controller = $post_type->get_rest_controller();
return $controller;
}
Класс WP_Post_Type в WordPress представляет собой ядро для взаимодействия с типами записей. Он содержит методы для управления таксономиями, метками и REST API контроллерами для типов записей. С помощью методов этого класса можно легко добавлять, изменять и удалять функциональность для типов записей в WordPress.