Функция use_block_editor_for_post()
в WordPress позволяет проверить, может ли конкретный пост редактироваться с использованием блокового редактора (Гутенберга). Это полезно, когда нужно определить, поддерживает ли пост блочное редактирование, особенно когда необходимо убедиться, что для типа записи включен REST API.
use_block_editor_for_post( int|WP_Post $post ): bool
- $post (обязательный) — идентификатор поста (целое число) или объект
WP_Post
.
Возвращаемое значение
Функция возвращает true
, если пост может быть отредактирован через блоковый редактор, и false
, если он не поддерживает эту функциональность.
Подробности о работе функции
- Если при регистрации типа записи параметр
show_in_rest
установлен вfalse
, функция вернетfalse
, поскольку блоковый редактор зависит от REST API. - Чтобы проверить поддержку блочного редактора по типу записи, лучше использовать функцию
use_block_editor_for_post_type()
.
Пример 1: Проверка поддержки блочного редактора для конкретного поста
$post_id = 123; // ID поста, который мы хотим проверить
if ( use_block_editor_for_post( $post_id ) ) {
// Код для работы с блочным редактором
echo "Пост можно редактировать в блоковом редакторе.";
} else {
// Код для работы с классическим редактором
echo "Пост не поддерживает блочный редактор.";
}
Этот пример демонстрирует, как можно использовать функцию для проверки возможности редактирования конкретного поста в блочном редакторе.
Пример 2: Добавление кнопки в блочный редактор
Ниже приведен пример использования use_block_editor_for_post()
для добавления пользовательской кнопки в интерфейс блочного редактора.
<?php
add_action( 'admin_print_scripts-edit.php', 'add_new_button_to_gutenberg', 11 );
function add_new_button_to_gutenberg() {
global $typenow;
// Проверяем права пользователя на редактирование типа поста
if ( ! current_user_can( 'edit_post_type', $typenow ) ) {
return;
}
// Проверяем, поддерживает ли текущий пост блочный редактор
if ( function_exists( 'use_block_editor_for_post' ) && ! use_block_editor_for_post( $typenow ) ) {
return;
}
?>
<script type="text/javascript">
document.addEventListener( 'DOMContentLoaded', function() {
var dropdown = document.querySelector( '#split-page-title-action .dropdown' );
if ( ! dropdown ) {
return;
}
var url = '<?php echo esc_url( get_create_new_post_url( $typenow ) ); ?>';
dropdown.insertAdjacentHTML( 'afterbegin', '<a href="' + url + '">Создать новый пост</a>' );
} );
</script>
<?php
}
В этом примере:
- Сначала проверяется, есть ли у текущего пользователя права на редактирование данного типа поста.
- Затем проверяется, может ли пост редактироваться с помощью блочного редактора.
- Если оба условия выполнены, добавляется новая кнопка «Создать новый пост» в выпадающий список на странице редактирования.
Заключение
Функция use_block_editor_for_post()
— полезный инструмент для разработчиков, работающих с блоковым редактором WordPress. Она помогает определить, поддерживает ли конкретный пост редактирование в Гутенберге, и дает возможность реализовывать различные логики в зависимости от поддержки редактора.