bestsource

Wordpress 사용자 역할은 연락처 양식 7에만 액세스할 수 있습니다.

bestsource 2023. 6. 23. 22:18
반응형

Wordpress 사용자 역할은 연락처 양식 7에만 액세스할 수 있습니다.

form_editor라는 사용자 지정 사용자 역할이 있습니다.나는 이 사용자가 연락처 양식 7만 편집할 수 있기를 원합니다.

이것이 지금까지 제가 가지고 있는 것입니다.

$form_editor_role = add_role(
    'form_editor',
    __( 'Form Editor' ),
    array(
        'read'         => true,  // true allows this capability
        'edit_posts'   => true,
        'delete_posts' => false, // Use false to explicitly deny
    )
);

$role = get_role( 'form_editor' );
if(!$role->has_cap('cfdb7_access')){
    $role->add_cap( 'cfdb7_access' );
}

그렇지 않습니다. 게시물에 액세스할 수 없습니다.연락처 양식에 대한 보기 권한은 있지만 편집 권한은 없습니다.

추가해 봅니다.publish_pages추가remove_role('form_editor');현재 역할을 새로 고치다

remove_role('form_editor');
add_role('form_editor', __('Form Editor'), array(
    'read' => true, // true allows this capability
    'edit_posts' => true,
    'delete_posts' => false, // Use false to explicitly deny
    'publish_pages' => true
));

$role = get_role('form_editor');
if (!$role->has_cap('cfdb7_access')) {
    role->add_cap('cfdb7_access');
}

링크를 보세요.연락처 양식 7은 기본 제공 사용자 기능을 사용합니다.

wpcf7_edit_contact_form => publish_pages
wpcf7_edit_contact_forms => publish_pages
wpcf7_read_contact_forms => edit_posts
wpcf7_delete_contact_form => publish_pages
wpcf7_manage_integration => manage_options

편집 권한을 부여해야 합니다.publish_pages다음과 같은 새로운 역할에 대한 기능:

$role = get_role( 'form_editor' );
$role->add_cap( 'publish_pages' );

CF7 플러그인은 프레임워크가 대시보드 통합 코어 코드를 성숙시키기 전 WordPress의 초기 단계에서 작성되었으며, 따라서 플러그인 작성자는 양식 편집기 페이지를 통합하기 위해 관리 클래스를 확장하는 여러 관리 페이지를 만들었습니다.WordPress 코어 코드는 관리 인터페이스에 이미 내장된 많은 기능을 활용하기 위해 현재 대시보드의 플러그인 통합을 위한 표준 메커니즘이 존재하는 시점까지 발전했습니다.CF7 플러그인 코드는 기존의 많은 핵심 기능이 CF7 플러그인에 적용되지 않을 정도로 레거시 코드를 유지해 왔습니다.를 들어 양식 테이블 목록에 사용자 정의 열을 추가합니다.

CF7 양식은 사용자 지정 게시 유형으로 저장됩니다.wpcf7_contact_form그러나 테이블 목록과 편집기 페이지는 둘 다 사용자 지정 관리 페이지입니다.edit.php각각 post.slot) 및 post.slot).CF7 플러그인에서 작업하기 위해 WP 코어 표준 기능을 사용하는 것은 항상 어려운 과제입니다.CF7 플러그인을 WP 코어 표준으로 되돌리기 위해 플러그인 확장을 개발하게 된 바로 이 이유입니다.저는 UI 디자이너를 통합하는 새로운 양식 편집기를 만들어 반응형 그리드 레이아웃 양식을 만들 수 있도록 Smart Grid-Layout Design Extension을 작성했습니다.따라서 테이블 목록과 양식 편집기 페이지는 이제 프레임워크의 전체 기능을 활용하는 WP 핵심 페이지가 되었습니다.

이 확장을 사용하면 새 역할정의하거나 기존 역할에 추가 기능을 추가하여 WordPress 기능을 사용하여 사용자 역할 액세스를 미세 조정할 수 있습니다.액세스를 제어할 수 있는 CF7 기능은 다음과 같습니다.

 'edit_posts' => 'wpcf7_edit_contact_forms'; //controls access to form table
 'edit_others_posts' => 'wpcf7_edit_others_contact_forms'; //controls access to forms created by other users.
 'edit_published_posts'  => 'wpcf7_edit_published_contact_forms'; //ability to edit published forms.
 'delete_posts'  => 'wpcf7_delete_contact_forms'; //delete forms.
 'delete_published_posts'  => 'wpcf7_delete_published_contact_forms'; //delete published forms.
 'delete_others_posts'  => 'wpcf7_delete_others_contact_forms'; //delete forms created by other users.
 'publish_posts'  => 'wpcf7_publish_contact_forms'; //publish forms, else status are set as pending.

예를 들어 양식 편집기의 새 역할을 만드는 것입니다.

add_action('init', 'create_cf7editor_role');
function create_cf7editor_role(){
  add_role('cf7_editor', 'Form Editor',
    array('wpcf7_edit_contact_forms'=>1,
    'wpcf7_edit_others_contact_forms'=>1,
    'wpcf7_edit_published_contact_forms'=>1,
    'wpcf7_read_contact_forms'=>1,
    'wpcf7_publish_contact_forms'=>1,
    'wpcf7_delete_contact_forms'=>1,
    'wpcf7_delete_published_contact_forms'=>1,
    'wpcf7_delete_others_contact_forms'=>1)
    );
}

이것을 보고 속임수를 썼습니다.모든 사용자 expect form_editor에 대한 연락처 양식 옵션을 비활성화했습니다. 괜찮겠습니까?

function remove_menu_pages() {

    //global $user_ID;

    
    
     if( is_user_logged_in() ) {
 $user = wp_get_current_user();
 $roles = ( array ) $user->roles;
if($roles[0]!='form_editor')
{
    remove_menu_page('wpcf7');
}
}
    
}
add_action( 'admin_init', 'remove_menu_pages' );

언급URL : https://stackoverflow.com/questions/52966570/wordpress-user-role-allow-acces-only-to-contact-form-7

반응형