Использование функции USE_BLOCK_EDITOR_FOR_POST() в WordPress 5.0.0

Использование функции 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" в редакторе
    ?>
    
    

Объяснение кода

  1. Мы добавляем действие с помощью add_action(), которое срабатывает при загрузке скриптов на странице редактирования записи.
  2. Используем User::is_current_user_can_edit_post_type(), чтобы проверить, может ли текущий пользователь редактировать данную запись.
  3. Если функции use_block_editor_for_post доступны, проверяем, можно ли редактировать тип записи в блоковом редакторе.
  4. Добавляем кнопку "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. Понимание её работы поможет вам лучше настраивать плагины и темы, а также повышать удобство работы с сайтом.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *