2017-04-19 16 views
0

저는 회원 디렉토리 웹 사이트가있어서 도움이 필요합니다.WP metababox를 관리자 만 편집 할 수있게하십시오.

저는 Wordpress에서 맞춤 게시물 유형에 연결된 분류법을 사용하고 있습니다. 이를 통해 각 게시물에 지리적 영역을 적용 할 수 있습니다. 문제는 모든 회원이 특정 게시물에 대한 액세스 권한을 가지고 있어도 해당 지역을 업데이트 할 수있는 액세스 권한이 있다는 것입니다. 지역 대사 산물을 관리자 역할에만 편집 가능하게 만들고 싶습니다. 여기서 현재 코드이다

function region() { 

$labels = array(
    'name'      => _x('Regions', 'Taxonomy General Name', 'text_domain'), 
    'singular_name'    => _x('Region', 'Taxonomy Singular Name', 'text_domain'), 
    'menu_name'     => __('Regions', 'text_domain'), 
    'all_items'     => __('All Items', 'text_domain'), 
    'parent_item'    => __('Parent Item', 'text_domain'), 
    'parent_item_colon'   => __('Parent Item:', 'text_domain'), 
    'new_item_name'    => __('New Item Name', 'text_domain'), 
    'add_new_item'    => __('Add New Item', 'text_domain'), 
    'edit_item'     => __('Edit Item', 'text_domain'), 
    'update_item'    => __('Update Item', 'text_domain'), 
    'view_item'     => __('View Item', 'text_domain'), 
    'separate_items_with_commas' => __('Separate items with commas', 'text_domain'), 
    'add_or_remove_items'  => __('Add or remove items', 'text_domain'), 
    'choose_from_most_used'  => __('Choose from the most used', 'text_domain'), 
    'popular_items'    => __('Popular Items', 'text_domain'), 
    'search_items'    => __('Search Items', 'text_domain'), 
    'not_found'     => __('Not Found', 'text_domain'), 
); 
$args = array(
    'labels'      => $labels, 
    'hierarchical'    => true, 
    'public'      => true, 
    'show_ui'     => true, 
    'show_admin_column'   => true, 
    'map_meta_cap'    => false,  
    'show_in_nav_menus'   => true, 
    'show_tagcloud'    => true, 
); 
register_taxonomy('region', array('installer'), $args); 

} ADD_ACTION ('초기화하기 ","지역 ", 0);

'show_ui'을 false로 변경하려고 시도했지만 관리자도 숨 깁니다. 나는 간단한 해결책이 있어야한다는 것을 알고 있지만, 나는 그것을 발견하지 못하고있다.

+0

'show_ui' 매개 변수를 부울 변수로 만들고 함수의 맨 위에서'$ show_ui = (current_user_can ('administrator')? true : false);' –

답변

0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 트릭을 수행하는 것으로 보이는 if/else 문을 추가했습니다. 아래 참조 :

function region() { 

$labels = array(
    'name'      => _x('Regions', 'Taxonomy General Name', 'text_domain'), 
    'singular_name'    => _x('Region', 'Taxonomy Singular Name', 'text_domain'), 
    'menu_name'     => __('Regions', 'text_domain'), 
    'all_items'     => __('All Items', 'text_domain'), 
    'parent_item'    => __('Parent Item', 'text_domain'), 
    'parent_item_colon'   => __('Parent Item:', 'text_domain'), 
    'new_item_name'    => __('New Item Name', 'text_domain'), 
    'add_new_item'    => __('Add New Item', 'text_domain'), 
    'edit_item'     => __('Edit Item', 'text_domain'), 
    'update_item'    => __('Update Item', 'text_domain'), 
    'view_item'     => __('View Item', 'text_domain'), 
    'separate_items_with_commas' => __('Separate items with commas', 'text_domain'), 
    'add_or_remove_items'  => __('Add or remove items', 'text_domain'), 
    'choose_from_most_used'  => __('Choose from the most used', 'text_domain'), 
    'popular_items'    => __('Popular Items', 'text_domain'), 
    'search_items'    => __('Search Items', 'text_domain'), 
    'not_found'     => __('Not Found', 'text_domain'), 
); 
if (current_user_can('administrator')){ 
    $args = array(
    'labels'      => $labels, 
    'hierarchical'    => true, 
    'public'      => true, 
    'show_ui'     => true, 
    'show_admin_column'   => true, 
    'map_meta_cap'    => false,  
    'show_in_nav_menus'   => true, 
    'show_tagcloud'    => true, 
); 
}else{ 
    $args = array(
    'labels'      => $labels, 
    'hierarchical'    => true, 
    'public'      => true, 
    'show_ui'     => false, 
    'show_admin_column'   => true, 
    'map_meta_cap'    => false,  
    'show_in_nav_menus'   => true, 
    'show_tagcloud'    => true, 
); 
} 
register_taxonomy('region', array('installer'), $args); 

} 
add_action('init', 'region', 0); 

그리고 나서 관리자와 비 관리자 역할에 따라 'show_ui_을 true에서 false로 변경했습니다. 누구나 쉽게 이것을 할 수있는 방법을 찾으면 나는 그것을보고 싶다.