회원이 맞춤 게시물 유형에만 액세스 할 수 있도록합니다. 자신의 게시물 만 편집 할 수있는 권한


29

OK 나는 이것을 공격하는 가장 좋은 방법을 찾고 있습니다.

PHP에 익숙하고 WordPress의 사용자 정의 메타 필드로 사용자 정의 게시물 유형을 작성합니다.

내가보고있는 것은 다음과 같습니다.

  1. 사용자는 등록하고 기본적으로 가입자로 설정됩니다.
  2. 관리자의 사용자 요청에 따라 사용자 정의 게시물 유형에 대한 권한이 있습니다.
  3. 관리자는 "Shop Owner"와 같은 다른 권한 이름에 사용자를 할당합니다.
  4. 사용자는 이제 사용자 정의 게시물 유형을 볼 수 있으며이 게시물 유형을 입력 할 수 있습니다.
  5. 사용자는 자신의 게시물 만보고 편집 할 수 있습니다.

다음에 대한 도움이 필요합니다.

  1. "Shop Owner"라는 새로운 "역할"을 만드는 방법
  2. 사용자 지정 게시물 유형 만보고 액세스 할 수 있도록 해당 역할에 올바른 권한을 부여하는 방법
  3. 사용자가이 사용자 정의 게시물 유형에 대한 자신의 게시물을보고 편집하도록 허용하십시오.

이상적으로는이 모든 것이 wp-admin에서 수행되는 것을 선호하지만 유한 한 컨트롤을 얻기 위해 프론트 엔드를 빌드해야 할 수도 있습니다.

모든 의견을 높이 평가합니다.

친절한 관계

답변:


21

Justin Tadlock의 플러그인 " Members "를 사용하십시오 . 새 역할을 만들고 기존 역할을 편집하고 사용자 지정 기능을 추가 할 수 있습니다. 당신이해야 할 모든 작업은 몇 번의 클릭으로 중단 될 수 있습니다.

ZaMoose의 답변에 대한 귀하의 의견에서``기능을 직접 작성하여 모든 것을 완전히 제어 할 수 있기를 원합니다 ''라고 말한 것을 알고 있습니다. 오픈 소스 소프트웨어의 요점은 빠졌습니다. Justin Tadlock은 자신의 플러그인을 출시하여 정확하게 사용할 수 있으므로 모든 것을 완벽하게 제어 할 수 있습니다.

당신이 정말로 있다면 정말 잠재적으로 자신의 시간의 수백 시간을 낭비하고, 바퀴를 재발견 할 나는 당신을 막을 수는 없지만 적어도 자신 저장 문제 및 사용 Tadlock의 플러그인은 당신이 원하는 일을하는 방법을 배울 수 있습니다.

원하는 것을 수행하는 플러그인이 있으면 'post', 'page'또는 다른 'reserved'이외의 것을 나타내도록 post type 등록 기능에서 플래그 와로 'map_meta_cap'플래그 를 변경해야합니다. 유형. 그런 다음 게시물 (예 : 관련된 모든 기능 중복 , , 게시물 대신 기능 유형을 사용, 등). 이러한 모든 권한을 관리자에게 할당하고 (이 작업을 수행 할 때까지 게시물 유형을 볼 수 없음) 역할을 생성하여 게시물 유형에 대한 '기여자'역할 기능을 모방하십시오.true'capability_type'edit_postsedit_others_postspublish_posts

예를 들어, 기능 유형이 있었다라고 foobars, 당신이 제공하는 '상점 주인을'원하는 것 edit_foobars, delete_foobars그리고 read능력을. 이렇게하면 자체 초안 foobar를 생성하고 초안을 삭제할 수 있지만 publish_foobars, 기능 이 없기 때문에 승인을 위해 제출해야합니다. 이 (가) 없기 때문에 edit_published_foobars승인 된 foobar에 대한 모든 수정이 승인되어야합니다.


멤버 플러그인을 사용하여 멤버 권한이 작동하는 방식을 확인하십시오. 내가 설정 한 'map_meta_cap' => true'capability_type' => 'shopowner'내 사용자 지정 게시 유형에. 나는 새로운 역할을 만들고 ShopOwnerread, edit_shopowner, delete_shopowner의 기능을 부여했습니다. 사용자를 ShopOwner의 역할로 설정하고 해당 사용자로 로그인하십시오. 해당 사용자는 맞춤 게시물 유형을 볼 수 없습니다. 내가 놓친 것이 있습니까?
Brady

2
에 그 변경 edit_shopownersdelete_shopowners. edit_shopowner그리고 delete_shopowner사실에 대해 확인되지 않습니다 메타 기능입니다. 누군가 특정 항목을 편집하거나 삭제하려고하면 "이 사용자는 이러한 유형의 항목을 삭제할 수 있습니까? 자신 또는 다른 사람 만 삭제할 수 있습니까? 게시 된 항목을 삭제할 수 있습니까?" 등
존 P 블로흐

나는 그것을 이해할 수 없었지만 ... 내 사용자 정의 게시물 유형에서 기능을 설정하고 멤버 플러그인에서 해당 기능을 생성하여 내가 추구하는 기능을 얻었습니다. 귀하의 게시물이 솔루션을 함께 구성하는 데 가장 유용했기 때문에 답변을 수여했습니다. 감사합니다
Brady

19

레지스터 게시 유형에는 "capabilities"라는 매개 변수가 있으므로 예를 들어

'capability' => 'organize_shop',

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

새 사용자 / 역할 / 기능을 작성하려면 add_role, add_cap을 사용하여 간단한 예제를 시작할 수 있습니다.

// 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' );

흠 ... 나는 2와 3 라인의 차이점이 무엇인지 조금 혼란 스럽습니까? : S 'Shop Owner'역할에 동일한 기능을 추가하지 않습니까?
dashaluna

예, 동일하지만 다른 방법을 보여줍니다. 첫 번째 매개 변수는 첫 번째 매개 변수 (Shop Owner) 역할을 포함하고 두 번째 매개 변수는 $ role을 사용하기 때문에 한도입니다.
Wyck

3
기능 / 권한을 번역 하시겠습니까? 그것은 __ ( '')입니다.
Svetoslav Marinov

@SvetoslavMarinov 번역을 제거하기 위해 답변을 편집했습니다.
MikeSchinkel

@dashaluna 나는 그것을 명확히하기 위해 답을 편집했습니다.
MikeSchinkel

1

실제 컨텐츠 제출을 처리하기 위해 Gravity Forms 또는 TDO Mini Forms 를 검토해 보셨습니까 ? 각 기능에는 사용자가 제출 한 컨텐츠를 제대로 처리하는 데 도움이되는 기능이 있습니다.


답장을 보내 주셔서 감사하지만 이것들은 내가 찾고있는 것이 아닙니다. 주로 플러그인이기 때문입니다. 기능을 직접 작성하여 모든 것을 완벽하게 제어하려고합니다.
Brady

0

"Advance Access Manager"라는 플러그인을 설치하여이를 달성하는보다 쉽고 효율적인 방법은 기능을 작성할 필요는 없지만 사용자, 역할 및 사용자가 수행 할 수있는 작업에 대한 적절한 수준의 제어를 유지하는 것입니다. 당신이 원하는 것들의 대부분은이 플러그인에 의해 달성 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.