Использование функции USE_BLOCK_EDITOR_FOR_POST() в WordPress 5.0.0
Введение
Функция USE_BLOCK_EDITOR_FOR_POST()
в WordPress определяет, можно ли редактировать запись в редакторе блоков (Gutenberg). Эта функция полезна, если вы настраиваете свои плагины или темы.
- Версия: 5.0.0 и выше
- Время выполнения: примерно 0.0007281 секунд (медленно), 50000 раз — 0.34 секунды (очень быстро)
- PHP: 8.1.27, WP 6.5.2
Хуки
Функция использует хук:
use_block_editor_for_post
Возвращаемое значение
Функция возвращает true
или false
. Это означает, можно ли редактировать запись в редакторе блоков.
Использование функции
Вот как использовать функцию use_block_editor_for_post
:
use_block_editor_for_post( $post );
Параметры
- $post (int|WP_Post) - Обязательный параметр. Это ID записи или объект WP_Post, который вы хотите проверить.
Примеры использования
В этом разделе рассмотрим пример использования функции из плагина "Elementor Website Builder".
add_action( 'admin_print_scripts-edit.php', [ __CLASS__, 'add_new_button_to_gutenberg' ], 11 );
function add_new_button_to_gutenberg() {
global $typenow;
// Проверяем, может ли текущий пользователь редактировать тип записи
if ( ! User::is_current_user_can_edit_post_type( $typenow ) ) {
return;
}
// Проверяем, доступен ли редактор блоков для данного типа записи
if ( function_exists( 'use_block_editor_for_post' ) && ! use_block_editor_for_post( $typenow ) ) {
return;
}
// Показать кнопку "Elementor" в редакторе
?>
Объяснение кода
- Мы добавляем действие с помощью
add_action()
, которое срабатывает при загрузке скриптов на странице редактирования записи. - Используем
User::is_current_user_can_edit_post_type()
, чтобы проверить, может ли текущий пользователь редактировать данную запись. - Если функции
use_block_editor_for_post
доступны, проверяем, можно ли редактировать тип записи в блоковом редакторе. - Добавляем кнопку "Elementor" к выпадающему меню.
Изменения в функции
- С момента 5.0.0: Функция была введена.
- С момента 6.1.0: Функция была перемещена из wp-admin в wp-includes.
Полный код функции
Вот полный код функции use_block_editor_for_post
:
function use_block_editor_for_post( $post ) {
$post = get_post( $post );
if ( ! $post ) {
return false;
}
// Мы находимся в загрузчике метабоксов, поэтому не используем редактор блоков.
if ( is_admin() && isset( $_GET['meta-box-loader'] ) ) {
check_admin_referer( 'meta-box-loader', 'meta-box-loader-nonce' );
return false;
}
// Проверка, можно ли использовать редактор блоков для типа записи
$use_block_editor = use_block_editor_for_post_type( $post->post_type );
/**
* Фильтрация, может ли запись редактироваться в редакторе блоков.
*
* @param bool $use_block_editor Можем ли редактировать запись или нет.
* @param WP_Post $post Проверяемая запись.
*/
return apply_filters( 'use_block_editor_for_post', $use_block_editor, $post );
}
Заключение
Функция USE_BLOCK_EDITOR_FOR_POST()
является мощным инструментом для определения возможности редактирования записей в новом редакторе WordPress. Понимание её работы поможет вам лучше настраивать плагины и темы, а также повышать удобство работы с сайтом.