Cho phép thành viên chỉ có quyền truy cập vào loại bài tùy chỉnh. Quyền chỉ chỉnh sửa bài viết của họ


29

OK Tôi đang tìm cách tốt nhất để tấn công này.

Tôi rất thoải mái với PHP và tạo các loại bài đăng tùy chỉnh với các trường meta tùy chỉnh trong WordPress.

Đây là những gì tôi đang làm:

  1. Người dùng đăng ký và được đặt ở thuê bao theo mặc định.
  2. Yêu cầu người dùng từ quản trị viên để có quyền cho loại bài đăng tùy chỉnh.
  3. Quản trị viên gán người dùng cho một tên quyền khác như "Chủ cửa hàng".
  4. Người dùng hiện có thể thấy loại bài đăng tùy chỉnh và có thể tạo một mục cho loại bài đăng này.
  5. Người dùng chỉ có thể xem và chỉnh sửa bài đăng của riêng họ.

Tôi cần giúp đỡ về những điều sau đây:

  1. Cách tạo "Vai trò" mới gọi là "Chủ cửa hàng",
  2. Làm thế nào để cấp quyền chính xác cho vai trò đã nói để chỉ xem và có quyền truy cập vào loại bài đăng tùy chỉnh.
  3. Chỉ cho phép người dùng xem và chỉnh sửa bài đăng của riêng họ thành loại bài đăng tùy chỉnh này.

Lý tưởng nhất là tôi thích tất cả điều này được thực hiện từ quản trị viên wp nhưng tôi đoán rằng tôi có thể cần phải xây dựng một mặt trước cho việc này để có được sự kiểm soát hữu hạn mà tôi đang theo đuổi.

Bất kỳ đầu vào được đánh giá rất cao.

Trân trọng

Câu trả lời:


21

Sử dụng plugin " Thành viên " của Justin Tadlock . Nó cung cấp cho bạn khả năng tạo vai trò mới và chỉnh sửa vai trò hiện có, cũng như thêm khả năng tùy chỉnh. Tất cả công việc mà bạn phải làm có thể được đưa xuống một vài cú nhấp chuột.

Tôi biết bạn đã nói trong nhận xét của mình về câu trả lời của ZaMoose rằng bạn đang 'tìm cách tự viết chức năng để tôi có toàn quyền kiểm soát mọi thứ.' Đó là thiếu toàn bộ điểm của phần mềm nguồn mở. Justin Tadlock đã phát hành plugin của mình để bạn có thể sử dụng chính xác để bạn có toàn quyền kiểm soát mọi thứ.

Nếu bạn thực sự muốn phát minh lại bánh xe, có khả năng lãng phí hàng trăm giờ thời gian của riêng bạn, tôi không thể ngăn bạn, nhưng ít nhất bạn có thể tự cứu mình khỏi rắc rối và sử dụng plugin của Tadlock để học cách làm những gì bạn muốn.

Khi bạn có một plugin làm những gì bạn muốn, bạn sẽ cần thay đổi 'map_meta_cap'cờ thành true'capability_type'cờ trong chức năng đăng ký loại bài đăng của mình để nó nói một cái gì đó khác ngoài 'bài đăng', 'trang' hoặc bất kỳ 'dành riêng' nào khác kiểu. Sau đó, sao chép tất cả các khả năng liên quan đến bài viết (ví dụ edit_posts, edit_others_posts, publish_posts, vv), sử dụng loại năng lực của bạn thay vì bài đăng nào. Đảm bảo chỉ định tất cả các quyền này cho quản trị viên (bạn sẽ không thể xem loại bài đăng cho đến khi bạn thực hiện việc này), sau đó tạo vai trò của mình, bắt chước khả năng của vai trò 'người đóng góp' cho loại bài đăng của bạn.

Ví dụ, nói loại khả năng của bạn là foobars, bạn sẽ muốn cung cấp cho chủ sở hữu cửa hàng 'sự edit_foobars, delete_foobarsreadkhả năng. Bằng cách đó, họ có thể tạo foobars dự thảo của riêng mình và xóa các bản nháp đó, nhưng vì họ không có publish_foobarskhả năng, họ phải gửi chúng để được phê duyệt. Bởi vì họ không có edit_published_foobars, tất cả các sửa đổi đối với một foobar đã được phê duyệt phải được phê duyệt.


OK tôi đang sử dụng plugin Thành viên ngay bây giờ để có được ý chính về cách các quyền thành viên hoạt động. Tôi đã thiết lập 'map_meta_cap' => true'capability_type' => 'shopowner'trên loại bài tùy chỉnh của tôi. Tôi đã tạo ra một vai trò mới được gọi ShopOwnervà cung cấp cho nó các khả năng đọc, edit_shopowner, xóa_shopowner. Đặt người dùng vào vai trò của ShopOwner và đăng nhập với người dùng đó. Người dùng đó không thể xem loại bài tùy chỉnh. Tôi đã bỏ lỡ một cái gì đó?
Brady

2
thay đổi chúng thành edit_shopownersdelete_shopowners. edit_shopownerdelete_shopownerlà các khả năng meta không bao giờ thực sự được kiểm tra. Họ đã kiểm tra khi ai đó cố gắng chỉnh sửa hoặc xóa một mục cụ thể và cuối cùng kiểm tra những thứ như "Người dùng này có thể xóa các loại mục này không? Họ chỉ có thể xóa mục của họ hoặc của người khác không? Họ có thể xóa các mục đã xuất bản không?" v.v.
John P Bloch

Tôi không thể hiểu ý nghĩa của nó ... nhưng tôi đã có được chức năng mà tôi có sau khi cài đặt các khả năng trong loại bài đăng tùy chỉnh của mình và tạo các khả năng đó trong plugin thành viên. Tôi đã trao cho bạn câu trả lời vì bài đăng của bạn là hữu ích nhất để tôi ghép một giải pháp lại với nhau. Cảm ơn
Brady

19

Loại bài đăng ký có một tham số gọi là "khả năng" để bạn có thể có ví dụ

'capability' => 'organize_shop',

http://codex.wordpress.org/Function_Reference/register_post_type

Để tạo người dùng / vai trò / khả năng mới, bạn có thể sử dụng add_role, add_cap, cho một ví dụ đơn giản để giúp bạn bắt đầu:

// Add the role to WordPress list of roles
// Then add the capability 'organize_shop' to the 'shop_owner' role
$role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true]));
$role->add_cap( 'organize_shop' );


// If 'shop_owner' already exists make `$wp_roles` visible then 
// add the capability 'organize_shop' to the 'Show Owner' role
public $wp_roles;
$wp_roles->add_cap( 'shop_owner', 'organize_shop' );

hmm ... tôi hơi bối rối sự khác biệt giữa 2 và 3 dòng là gì? : S Không phải nó sẽ thêm khả năng tương tự vào 'Chủ cửa hàng' sao?
dashaluna

Vâng, chúng giống nhau nhưng chúng chỉ ra các cách khác nhau để thực hiện, đầu tiên bao gồm vai trò là tham số đầu tiên (Chủ cửa hàng), thứ hai chỉ là giới hạn vì nó đang sử dụng vai trò $.
Wyck

3
Bạn có nghĩa vụ phải dịch một khả năng / sự cho phép? đó là __ ('');
Svetoslav Marinov

@SvetoslavMarinov Tôi đã chỉnh sửa câu trả lời để xóa bản dịch.
MikeSchinkel

@dashaluna Mình chỉnh sửa câu trả lời để làm rõ.
MikeSchinkel

1

Bạn đã xem xét việc xem Gravity Forms hay TDO Mini Forms để xử lý việc gửi nội dung thực tế chưa? Mỗi cái đều có chức năng giúp bạn xử lý tốt nội dung do người dùng gửi.


Cảm ơn bạn đã trả lời nhưng đây không phải là những gì tôi đang tìm kiếm. Chủ yếu là vì đây là các plugin. Tôi đang tìm cách tự viết các chức năng để tôi có toàn quyền kiểm soát mọi thứ.
Brady

0

Một cách dễ dàng và hiệu quả hơn để có thể đạt được điều này bằng cách cài đặt một plugin có tên là "Trình quản lý truy cập nâng cao", bạn sẽ không phải viết chức năng nhưng vẫn có mức độ kiểm soát tốt đối với người dùng, vai trò và những gì họ có thể làm. Hầu hết những thứ bạn muốn có thể đạt được bằng plugin này.

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.