WP_IS_REST_ENDPOINT() │ WP 6.5.0
Функция WP_IS_REST_ENDPOINT()
проверяет, обрабатывается ли в данный момент запрос к REST API.
Это может быть отдельный запрос к REST API или внутренний запрос, который нужно обработать во время обычной загрузки страницы.
Хуки функции
Есть хук wp_is_rest_endpoint
, который позволяет расширять функциональность этой функции.
Возвращаемые значения
Функция возвращает true
или false
. Она возвращает true
, если в данный момент обрабатывается запрос к REST API, иначе — false
.
Использование
Вы можете использовать функцию следующим образом:
wp_is_rest_endpoint();
Примеры
Пример 1: Код из плагина Pods
Из файла pods/src/Pods/WP/Bindings.php
плагина Pods – Custom Content Types and Fields:
/**
* Получает связанное значение для связанного блока.
*
* @since 3.2.0
*
* @param array $source_args Список исходных аргументов из блока.
* @param WP_Block $block_instance Экземпляр блока.
* @param string $attribute_name Название атрибута блока.
*
* @return string Связанное значение.
*/
public function get_value( $source_args, $block_instance, $attribute_name ) {
if ( empty( $source_args['field'] ) ) {
if ( is_admin() || wp_is_rest_endpoint() || pods_is_admin() ) {
return __( 'Вы должны предоставить "field" для привязки.', 'pods' );
}
return '';
}
/** @var Field $field_block */
$field_block = pods_container( 'pods.blocks.field' );
if ( ! $field_block ) {
if ( is_admin() || wp_is_rest_endpoint() || pods_is_admin() ) {
return __( 'Блоки Pods не включены.', 'pods' );
}
return '';
}
$value = $field_block->render( $source_args, '', $block_instance );
// Поддерживаем только полный HTML для атрибута 'content'.
if ( 'content' !== $attribute_name ) {
$value = wp_strip_all_tags( $value );
}
return $value;
}
Пример 2: Код из плагина Markup Markdown
Из файла MarkupMarkdown/Core/Support.php
плагина Markup Markdown:
/**
* Выводит обработку markdown
*
* @since 3.3.4
* @access public
*
* @return Void
*/
public function whitelist_wp_api() {
if ( ! wp_is_rest_endpoint() ) {
return false;
}
$this->prepare_markdown_editor();
// Разрешаем markdown в REST API для описаний терминов
add_filter( 'rest_prepare_category', array( $this, 'prepare_desc_field' ), 10, 3 );
add_filter( 'rest_prepare_post_tag', array( $this, 'prepare_desc_field' ), 10, 3 );
if ( function_exists( 'get_taxonomies' ) ) {
$my_taxonomies = get_taxonomies( array( 'show_in_rest' => true, '_builtin' => false ) );
foreach( $my_taxonomies as $tax ) {
add_filter( 'rest_prepare_' . $tax, array( $this, 'prepare_desc_field' ), 10, 3 );
}
}
$this->set_content_filters();
}
/**
* Небольшо�� переключатель для применения или отказа от фильтров markdown
* С 3.0: Проверка типа поста внутри цикла
*
* @access public
* @since 2.0
*
* @param String $field_content HTML контент
* @param Integer $cache_allowed 1, если кеш разрешен для данного поля
*
* @return String $content Измененный HTML контент
*/
private function content_data( $field_content, $cache_allowed ) {
if ( wp_is_rest_endpoint() || ( ( is_home() || is_front_page() || is_singular() || is_archive() ) && in_the_loop() && is_main_query() ) ) {
if ( post_type_supports( get_post_type(), 'markup_markdown' ) ) {
return apply_filters( 'post_markdown2html', $field_content, $cache_allowed );
} else {
return $field_content;
}
} else {
return $field_content;
}
}
Примечания
- Глобальная переменная:
WP_REST_Server $wp_rest_server
. Это экземпляр REST сервера.
Журнал изменений
С версии 6.5.0 функция была введена.
Код функции WP_IS_REST_ENDPOINT()
Из файла wp-includes/rest-api.php
:
function wp_is_rest_endpoint() {
/* @var WP_REST_Server $wp_rest_server */
global $wp_rest_server;
// Проверяем, является ли это отдельным запросом к REST.
$is_rest_endpoint = wp_is_serving_rest_request();
if ( ! $is_rest_endpoint ) {
// Проверяем, обрабатывается ли внутренний запрос к REST.
$is_rest_endpoint = isset( $wp_rest_server ) && $wp_rest_server->is_dispatching();
}
/**
* Фильтрует, обрабатывается ли в данный момент запрос к конечной точке REST.
*
* Это может быть отдельный запрос к REST API или внутренний запрос,
* обработанный во время обычной загрузки страницы.
*
* @since 6.5.0
*
* @param bool $is_request_endpoint Обрабатывается ли запрос к конечной точке REST.
*/
return (bool) apply_filters( 'wp_is_rest_endpoint', $is_rest_endpoint );
}
Теперь вы обладаете базовыми знаниями о функции WP_IS_REST_ENDPOINT()
. Если у вас есть вопросы или вы хотите узнать больше, не стесняйтесь спрашивать!