2017-04-19 74 views
0

我有一个成员目录网站,需要一些帮助。使WP metabox仅可由管理员编辑

我有一个链接到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

谢谢你,Ty,指着我朝着正确的方向前进。我添加了一个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,取决于管理员与非管理员角色。如果有人看到更简单的方法来做到这一点,我很乐意看到它。

相关问题