Việc sử dụng bộ lọc map_meta_cap là gì?


20

Việc sử dụng map_meta_capbộ lọc là gì? Bộ lọc này không được ghi lại ở bất cứ đâu. Tôi có một ý tưởng không rõ ràng về những gì nó có thể là:

Được sử dụng để ánh xạ quyền của người dùng đến các hoạt động trên bài viết.

Chính xác thì nó có nghĩa là gì? Nếu có thể xin vui lòng cho một số ví dụ mã mẫu của việc sử dụng đúng.

Câu trả lời:


25

Bộ lọc này cho phép bạn mở rộng các map_meta_cap()chức năng . Hàm này được gọi bằng cáchWP_User->has_cap() chuyển đổi một khả năng meta thành một hoặc nhiều khả năng nguyên thủy .

Ví dụ, bạn muốn biết xem người dùng hiện tại nên được phép chỉnh sửa bài viết hiện nay, các edit_postkhả năng meta . Điều này phụ thuộc vào một số yếu tố: người dùng có phải là tác giả của bài viết không? Là bài đã được xuất bản? Là bài được đánh dấu là riêng tư? Các khả năng nguyên thủy là edit_posts, edit_published_posts, edit_others_postsedit_private_posts: bạn có thể gán những để vai trò người dùng . map_meta_cap()kiểm tra tác giả và trạng thái của bài đăng và trả về tập hợp chính xác các khả năng nguyên thủy mà người dùng này phải cho phép chỉnh sửa bài đăng (nếu bài đăng được viết bởi người khác và được xuất bản, nó sẽ trở lại array('edit_others_posts', 'edit_published_posts'), vì vậy người dùng phải có cả hai khả năng tiếp tục).

Thêm ý tưởng về khả năng metakhả năng nguyên thủy này cho phép bạn giữ cho WP_Userlớp cơ sở không có kiến ​​thức về bài đăng và trạng thái bài đăng và bất cứ điều gì, và chỉ tập trung vào các khả năng. Việc chuyển đổi thực tế là trong một chức năng bên ngoài , map_meta_cap().

Bộ lọcmap_meta_cap cho phép bạn mở rộng chức năng, ví dụ như khi sử dụng bài viết tùy chỉnh. Tôi tin rằng hỗ trợ cơ bản được cung cấp nếu bạn đặt capabilitiesđối số register_post_type, nhưng bài viết được đề cập bởi Justin Tadlockplugin Prospress cung cấp các ví dụ đầy đủ về điều này. Nhưng bạn có thể tùy chỉnh nó để hoàn toàn biến hệ thống khả năng, nếu bạn muốn.



2

Đây là bộ lọc của chức năng map_meta_cap(). Từ mô tả, hàm này dường như viết ra khả năng chung ( can_do_ ware ) được chuyển vào cụ thể hơn (nếu tác giả của bài đăng thì can_do_this_ warecan_do_that_ ware_also ), kiểm tra các điều kiện khác nhau nếu cần.

Thật không may, nó không được ghi lại trong Codex và tôi không thể tìm thấy một cuộc gọi trực tiếp duy nhất của chức năng này trong nguồn WP 3.0.1.

Bạn đã gặp phải việc sử dụng chức năng này hoặc muốn sử dụng nó cho một cái gì đó? Tôi giả sử vì nó dường như không được sử dụng, có lẽ có những cách mới hơn và tốt hơn cho chức năng này.


Tác giả trình cắm này dường như đang sử dụng nó: github.com/Prospress/Prospress/blob/master/pp-posts/
mẹo
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.