Hạn chế quyền truy cập chỉnh sửa của một số bố cục chủ đề nhất định

Beaver Themer là một phần bổ sung của plugin Beaver Page Builder. Tiện ích bổ sung này cho phép bạn tạo bố cục cho các trang lưu trữ, tạo mẫu cho toàn bộ loại bài đăng, 404 và các trang tìm kiếm, đồng thời tạo các phần như đầu trang và chân trang.

Tôi tạo nhiều bố cục riêng cho trang web của mình. Tôi muốn hạn chế quyền truy cập chỉnh sửa của chỉ một số bố cục nhất định cho những người dùng WP được chọn. Ví dụ: giả sử tôi có bố cục đầu trang / chân trang và bố cục bài đăng đơn. Tôi muốn ai đó có thể chỉnh sửa tiêu đề, nhưng không thể thay đổi bố cục bài đăng.

Trong bài viết này, tôi sẽ chia sẻ quy trình của tôi. Tôi sử dụng các công cụ sau:

  1. Plugin trường tùy chỉnh nâng cao (ACF Pro)
  2. Plugin trình tạo trang hải ly
  3. Plugin trình tạo chủ đề hải ly
Lúc đầu, tôi tạo hộp meta người dùng cho loại bài đăng bố cục của họ bằng plugin Trường tùy chỉnh nâng cao. Xem ảnh chụp màn hình bên dưới:

Hộp meta người dùng sẽ xuất hiện bên dưới hộp cài đặt Bố cục Chủ đề Beaver giống như ảnh chụp màn hình được đính kèm.

Do đó, tôi thêm tập lệnh PHP nhỏ này vào tệp functions.php của chủ đề đang hoạt động của tôi.

/**
 * Restricting the editing access of selected users
 *
 * @author Paul Chinmoy
 * @link https://www.paulchinmoy.com
 */
add_filter( 'map_meta_cap', 'cp_map_meta_cap', 10, 4 );
function cp_map_meta_cap( $caps, $cap, $user_ID, $args ) {
	if ( in_array( $cap, array( 'delete_post', 'edit_post' ) ) && $args ) {
		$post_id = $args[0];
		if ( ! $post = get_post( $post_id ) )
			return $caps;
		if( $post->post_type !== 'fl-theme-layout' )
			return $caps;
		$restricted_users = get_post_meta( $post->ID, 'restricted_users', true );
		if( is_array( $restricted_users ) ) {
			foreach ( $restricted_users as $user ) {
				if( $user_ID == $user ) {
					$caps[] = 'not_allowed';
					return $caps;
				}
			}	
		}
	}
	return $caps;
}

map_meta_cap không thực sự so sánh liệu ID người dùng có khả năng thực sự hay không, mà chỉ là khả năng hoặc khả năng đó là gì. Tập lệnh trên chỉ hoạt động cho khả năng delete_post và edit_post.

Dòng số 17 đang kiểm tra loại bài đăng bố cục chủ đề.
Dòng số 20 là nhận được ID người dùng đã chọn.
Dòng số 22-28 Không cho phép quyền chỉnh sửa / xóa nếu ID của người dùng đã đăng nhập khớp với danh sách người dùng bị hạn chế.

Bây giờ tôi đang chỉnh sửa bố cục của chúng và đặt giới hạn cho những người dùng được chọn.

Tôi đã tạo một plugin đơn giản “Hạn chế chỉnh sửa nội dung hải ly” đang hoạt động trên bất kỳ loại bài đăng nào (không chỉ bố cục riêng). Bạn có thể thiết lập quyền truy cập dựa trên vai trò hoặc người dùng cá nhân.