Cách phát hiện việc sử dụng Gutenberg


8

Trình chỉnh sửa mới có tên Gutenberg ở đây là plugin trong 4.9 và chức năng cốt lõi được gọi là Block Editor, trong 5.0. Liên quan đến nó, thường cần xác định theo chương trình trình soạn thảo nào được sử dụng để chỉnh sửa bài hoặc trang trong bảng điều khiển trang. Làm thế nào để làm nó?

Cập nhật: Có nhiều câu trả lời lỗi thời cho câu hỏi tương tự:

  • gutenberg_post_has_blocks() - chức năng này chỉ tồn tại trong plugin Gutenberg chứ không phải trong 5.0 Core
  • is_gutenberg_page() - giống nhau
  • the_gutenberg_project() - giống nhau
  • has_blocks() - không hoạt động (trả về false) khi bật Trình chỉnh sửa cổ điển và tùy chọn "Trình chỉnh sửa mặc định cho tất cả người dùng" = "Trình chỉnh sửa khối"
  • Trả lời đơn giản là tạo ra lỗi nghiêm trọngCall to undefined function get_current_screen()

Vì vậy, trước khi bình luận câu hỏi và câu trả lời này, vui lòng thực hiện một công việc để kiểm tra những gì bạn đề xuất. Kiểm tra ngay bây giờ, với 4.9 và phiên bản hiện tại của WordPress và tất cả các kết hợp có thể có của Trình chỉnh sửa cổ điển và Gutenberg / Trình chỉnh sửa khối. Tôi sẽ rất vui khi thảo luận về giải pháp đã được thử nghiệm, không liên kết đến một cái gì đó.


add_action ('admin_enqueue_scripts', 'wpse_gutenberg_editor_test'); function wpse_gutenberg_editor_test () {if (function_exists ('is_gutenberg_page') && is_gutenberg_page ()) {// trình soạn thảo gutenberg của bạn liên quan đến CODE tại đây} khác {// đây không phải là gutenberg. // cái này thậm chí có thể không phải là bất kỳ trình soạn thảo nào, bạn cần kiểm tra màn hình. }}
zikpe zilpe



2
@vikrantzilpe xin đừng dựa vào thông tin lỗi thời. Nó là tốt hơn để kiểm tra những gì bạn đang viết. Ví dụ: the_gutenberg_project()chức năng chỉ tồn tại trong plugin Gutenberg, nhưng không có trong WP 5.0 Core.
Thiết kế KAGG ngày 30/11/18

Câu trả lời:


12

Có một số biến thể:

  • WordPress 4.9, plugin Gutenberg không hoạt động
  • WordPress 4.9, plugin Gutenberg đang hoạt động
  • WordPress 5.0, Trình chỉnh sửa khối theo mặc định
  • WordPress 5.0, plugin Classic Editor đang hoạt động
  • WordPress 5.0, plugin Trình chỉnh sửa cổ điển đang hoạt động, nhưng trong bảng điều khiển trang web trong Cài đặt của >> Cài đặt tùy chọn Sử dụng trình chỉnh sửa Chặn theo mặc định

Tất cả các biến thể được đề cập có thể được xử lý theo mã sau:

/**
 * Check if Block Editor is active.
 * Must only be used after plugins_loaded action is fired.
 *
 * @return bool
 */
function is_active() {
    // Gutenberg plugin is installed and activated.
    $gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );

    // Block editor since 5.0.
    $block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );

    if ( ! $gutenberg && ! $block_editor ) {
        return false;
    }

    if ( is_classic_editor_plugin_active() ) {
        $editor_option       = get_option( 'classic-editor-replace' );
        $block_editor_active = array( 'no-replace', 'block' );

        return in_array( $editor_option, $block_editor_active, true );
    }

    return true;
}

/**
 * Check if Classic Editor plugin is active.
 *
 * @return bool
 */
function is_classic_editor_plugin_active() {
    if ( ! function_exists( 'is_plugin_active' ) ) {
        include_once ABSPATH . 'wp-admin/includes/plugin.php';
    }

    if ( is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
        return true;
    }

    return false;
}

Hàm trả về true nếu trình chỉnh sửa khối được kích hoạt bằng bất kỳ phương tiện nào và sai - trong trường hợp nếu trình soạn thảo cổ điển ở đây. Chức năng này chỉ được sử dụng sau khi plugins_loadedhành động được kích hoạt.

PS Do phát hành phiên bản 1.2 của plugin cổ điển Editor, mã được cập nhật, như classic-editor-replacetùy chọn bây giờ có giá trị không replaceno-replace, nhưng classicblock.


không đi xuống, nhưng nó không phải là một câu trả lời an toàn thất bại. Bạn nên thực hiện phát hiện dựa trên các hành động hoặc bộ lọc được kích hoạt, không dựa trên sự tồn tại của tệp hoặc chức năng. Có một số cách để vô hiệu hóa gutenberg và trình soạn thảo cổ điển chỉ là một trong số đó.
Đánh dấu Kaplun

hoặc nói khác đi, bạn thậm chí không bao giờ nên cố gắng phát hiện xem gutenberg có được sử dụng hay không, mà thay vào đó chỉ cần móc bất kỳ chức năng nào bạn cần trên móc
gutenberg

1

Bạn có thể dùng

add_action( 'enqueue_block_editor_assets', 'your_function_name' );

vốn chỉ được kích hoạt khi chỉnh sửa nội dung với Gutenberg.


Mã này chỉ hoạt động trên trang biên tập.
Thiết kế KAGG

Thế còn enqueue_block_assets?
Marc

has_action( 'enqueue_block_assets' )không giống như những gì has_filter( 'replace_editor'trong mã của tôi. Nó trả về true nếu Classic Editor hoạt động và đặt Classic Editor làm mặc định. Tốt hơn là kiểm tra những gì bạn đề xuất trước khi viết.
Thiết kế KAGG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.