Ẩn blocks với user cụ thể trong WordPress editor

3 giờ ago, Hướng dẫn WordPress, Views
Ẩn blocks với user cụ thể trong WordPress editor

Ẩn Khối (Blocks) Với User Cụ Thể Trong WordPress Editor: Hướng Dẫn Chi Tiết

WordPress Gutenberg editor, với khả năng xây dựng trang bằng các khối (blocks) linh hoạt, đã thay đổi cách chúng ta tạo nội dung. Tuy nhiên, trong một số trường hợp, bạn có thể muốn ẩn một số khối nhất định khỏi một số người dùng cụ thể. Ví dụ, bạn có thể muốn ẩn các khối tùy chỉnh phức tạp khỏi những người dùng mới, hoặc chỉ hiển thị một số khối nhất định cho những người dùng có vai trò biên tập viên. Bài viết này sẽ hướng dẫn bạn chi tiết cách thực hiện điều này, bao gồm các phương pháp từ đơn giản đến phức tạp.

Tại Sao Cần Ẩn Khối (Blocks) Cho Người Dùng Cụ Thể?

Việc kiểm soát quyền truy cập vào các khối trong WordPress editor có thể mang lại nhiều lợi ích:

  • Đơn giản hóa giao diện cho người dùng mới: Giúp người dùng mới làm quen với editor dễ dàng hơn bằng cách ẩn các khối phức tạp.
  • Giảm nguy cơ lỗi: Ngăn người dùng không có kinh nghiệm sử dụng các khối có thể gây ra lỗi bố cục hoặc hiển thị.
  • Kiểm soát nội dung: Đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể sử dụng các khối tạo nội dung đặc biệt (ví dụ: khối quảng cáo, khối liên hệ).
  • Tăng tính bảo mật: Ẩn các khối có chứa thông tin nhạy cảm khỏi những người dùng không được phép truy cập.

Các Phương Pháp Ẩn Khối (Blocks) Cho User Cụ Thể

Có nhiều cách để ẩn các khối (blocks) cho người dùng cụ thể trong WordPress editor. Chúng ta sẽ xem xét một số phương pháp phổ biến và hiệu quả nhất:

1. Sử Dụng Plugin Quản Lý Quyền (Role Management Plugin)

Đây là phương pháp đơn giản và dễ thực hiện nhất, đặc biệt nếu bạn không quen với việc viết code. Các plugin quản lý quyền cho phép bạn tùy chỉnh quyền truy cập của người dùng dựa trên vai trò của họ. Một số plugin phổ biến bao gồm:

  • User Role Editor: Cho phép bạn chỉnh sửa các quyền của từng vai trò người dùng, bao gồm quyền sử dụng các khối cụ thể.
  • Members: Một plugin mạnh mẽ để quản lý vai trò, quyền và nội dung dựa trên vai trò.
  • Advanced Access Manager (AAM): Cung cấp các tính năng quản lý quyền nâng cao, bao gồm khả năng kiểm soát quyền truy cập vào các khối, meta boxes và các thành phần khác của WordPress.

Để sử dụng các plugin này, bạn chỉ cần cài đặt và kích hoạt chúng, sau đó truy cập vào trang cài đặt của plugin và tùy chỉnh quyền truy cập của các vai trò người dùng khác nhau. Thông thường, bạn sẽ tìm thấy một tùy chọn để cho phép hoặc từ chối quyền sử dụng các khối Gutenberg cụ thể.

2. Sử Dụng Bộ Lọc (Filters) của WordPress

Nếu bạn muốn có nhiều quyền kiểm soát hơn, hoặc nếu bạn không muốn sử dụng plugin, bạn có thể sử dụng bộ lọc (filters) của WordPress để ẩn các khối cho người dùng cụ thể. Phương pháp này đòi hỏi bạn phải viết code PHP, nhưng nó cho phép bạn tùy chỉnh hành vi của editor một cách chính xác.

Dưới đây là một ví dụ về cách sử dụng bộ lọc allowed_block_types_all để ẩn một khối cụ thể cho một người dùng cụ thể:


<?php
add_filter( 'allowed_block_types_all', 'my_allowed_block_types', 10, 2 );

function my_allowed_block_types( $allowed_block_types, $editor_context ) {
    $user = wp_get_current_user();

    // Thay đổi 'your_user_id' thành ID người dùng bạn muốn ẩn khối
    if ( in_array( 'your_user_id', (array) $user->roles ) ) {
        // Thay đổi 'core/paragraph' thành tên khối bạn muốn ẩn
        return array_diff( $allowed_block_types, array( 'core/paragraph' ) );
    }

    return $allowed_block_types;
}
?>

Trong đoạn code này:

  • Chúng ta sử dụng bộ lọc allowed_block_types_all để thay đổi danh sách các khối được phép.
  • Hàm my_allowed_block_types nhận hai tham số: $allowed_block_types (mảng các khối được phép) và $editor_context (thông tin về ngữ cảnh của editor).
  • Chúng ta lấy thông tin về người dùng hiện tại bằng hàm wp_get_current_user().
  • Chúng ta kiểm tra xem người dùng hiện tại có phải là người dùng mà chúng ta muốn ẩn khối hay không. Bạn cần thay đổi 'your_user_id' thành ID của người dùng đó.
  • Nếu người dùng là người dùng mục tiêu, chúng ta sử dụng hàm array_diff() để loại bỏ khối 'core/paragraph' khỏi danh sách các khối được phép. Bạn cần thay đổi 'core/paragraph' thành tên khối bạn muốn ẩn.
  • Cuối cùng, chúng ta trả về danh sách các khối được phép đã được sửa đổi.

Bạn có thể thêm đoạn code này vào file functions.php của theme, hoặc tạo một plugin tùy chỉnh để chứa nó. Lưu ý rằng việc chỉnh sửa file functions.php có thể gây ra lỗi nếu bạn không cẩn thận. Tốt nhất là tạo một plugin tùy chỉnh để giữ code của bạn được tổ chức và dễ quản lý hơn.

3. Sử Dụng JavaScript Để Ẩn Khối Trong Giao Diện Editor

Một phương pháp khác là sử dụng JavaScript để ẩn các khối trực tiếp trong giao diện editor. Phương pháp này có thể phức tạp hơn một chút so với hai phương pháp trước, nhưng nó cho phép bạn có nhiều quyền kiểm soát hơn đối với cách các khối được hiển thị trong editor.

Bạn có thể sử dụng JavaScript để kiểm tra vai trò của người dùng hiện tại và sau đó ẩn các khối tương ứng bằng cách thêm CSS hoặc xóa chúng khỏi DOM. Dưới đây là một ví dụ về cách thực hiện điều này:


<script>
wp.domReady( function() {
    var user = wp.data.select( 'core' ).getCurrentUser();

    // Thay đổi 'editor' thành vai trò bạn muốn ẩn khối
    if ( user.roles.includes( 'editor' ) ) {
        // Thay đổi 'core/image' thành tên khối bạn muốn ẩn
        wp.blocks.unregisterBlockType( 'core/image' );
    }
} );
</script>

Trong đoạn code này:

  • Chúng ta sử dụng hàm wp.domReady() để đảm bảo rằng code được thực thi sau khi DOM đã được tải.
  • Chúng ta sử dụng hàm wp.data.select( 'core' ).getCurrentUser() để lấy thông tin về người dùng hiện tại.
  • Chúng ta kiểm tra xem người dùng hiện tại có vai trò là 'editor' hay không. Bạn cần thay đổi 'editor' thành vai trò bạn muốn ẩn khối.
  • Nếu người dùng có vai trò mục tiêu, chúng ta sử dụng hàm wp.blocks.unregisterBlockType() để hủy đăng ký khối 'core/image'. Bạn cần thay đổi 'core/image' thành tên khối bạn muốn ẩn.

Bạn có thể thêm đoạn code này vào một file JavaScript riêng biệt và sau đó enqueue file JavaScript đó trong WordPress. Hoặc, bạn có thể thêm nó trực tiếp vào file functions.php của theme, nhưng điều này không được khuyến khích.

Lựa Chọn Phương Pháp Phù Hợp

Việc lựa chọn phương pháp phù hợp để ẩn các khối (blocks) cho người dùng cụ thể phụ thuộc vào nhu cầu và kỹ năng của bạn. Nếu bạn không quen với việc viết code, thì việc sử dụng plugin quản lý quyền là lựa chọn đơn giản và dễ thực hiện nhất. Nếu bạn muốn có nhiều quyền kiểm soát hơn, hoặc nếu bạn muốn tùy chỉnh hành vi của editor một cách chính xác, thì việc sử dụng bộ lọc (filters) của WordPress hoặc JavaScript là lựa chọn tốt hơn. Tuy nhiên, những phương pháp này đòi hỏi bạn phải có kiến thức về PHP và JavaScript.

Lời Khuyên Thêm

Dưới đây là một số lời khuyên thêm để giúp bạn ẩn các khối (blocks) cho người dùng cụ thể một cách hiệu quả:

  • Trước khi thực hiện bất kỳ thay đổi nào, hãy sao lưu website của bạn để phòng trường hợp xảy ra lỗi.
  • Thử nghiệm các thay đổi trên một môi trường staging trước khi áp dụng chúng vào website thực tế.
  • Đảm bảo rằng code của bạn được viết đúng cú pháp và tuân thủ các tiêu chuẩn của WordPress.
  • Sử dụng các công cụ gỡ lỗi để tìm và sửa lỗi trong code của bạn.
  • Nếu bạn gặp khó khăn, hãy tìm kiếm sự giúp đỡ từ cộng đồng WordPress.

Kết Luận

Ẩn các khối (blocks) cho người dùng cụ thể trong WordPress editor là một cách hiệu quả để đơn giản hóa giao diện, giảm nguy cơ lỗi và kiểm soát nội dung. Có nhiều phương pháp khác nhau để thực hiện điều này, từ việc sử dụng plugin quản lý quyền đến việc viết code PHP và JavaScript. Lựa chọn phương pháp phù hợp phụ thuộc vào nhu cầu và kỹ năng của bạn. Hy vọng bài viết này đã cung cấp cho bạn những thông tin hữu ích để bạn có thể thực hiện điều này một cách dễ dàng.