显示特定角色的Metabox

时间:2020-09-25 作者:ma ja

我在我的网站上有特殊的角色。我使用简易数字下载。我的用户可以访问下载页面。我不想让metabox看到销售额。我可以隐藏此角色或用户的此元数据库吗?

当然,现在我不得不用CSS删除了它(display : none)提前感谢您的指导。

2 个回复
SO网友:Hector

这个Download stats Metabox检查了view_product_stats EDD代码中的功能。在里面/easy-digital-downloads/includes/admin/downloads/metabox.php 生产线:42

if ( current_user_can( \'view_product_stats\', get_the_ID() ) ) {
    /** Product Stats */
    add_meta_box(
        \'edd_product_stats\',
        sprintf( __( \'%1$s Stats\', \'easy-digital-downloads\' ),
        edd_get_label_singular(), edd_get_label_plural() ),
        \'edd_render_stats_meta_box\',
        $post_type,
        \'side\',
        \'high\'
    );
}
您只需删除view_product_stats 特殊用户角色的功能。

global $wp_roles;
$wp_roles->remove_cap( \'your_special_role\', \'view_product_stats\' );

SO网友:Trisha

我认为赫克托的答案在这种情况下最合适,因为他创建了一个特殊的用户角色,您可以用他的代码将其作为目标。

对于其他没有自定义用户角色但希望隐藏某些元数据库的用户,可以像我这样做,以确保编辑器级别以下的人都无法访问某些特定元数据库:

// Removes certain Metaboxes
function remove_post_metaboxes() {
if ( !current_user_can( \'edit_others_posts\' ) ) { // Enter your desired Capability to target specific Roles
    remove_meta_box( \'formatdiv\',\'post\',\'side\' ); // Format Metabox
    remove_meta_box( \'categorydiv\',\'post\',\'side\' ); // Category Metabox
    remove_meta_box( \'adv-tagsdiv\',\'post\',\'side\' ); // Tags (Simple Tags) Metabox
    remove_meta_box( \'st-clicks-tags\',\'post\',\'advanced\' ); // Tags (Simple Tags) Metabox
    remove_meta_box( \'edit-flow-notifications\',\'post\',\'advanced\' ); // EditFlow UserGroups Notifications Metabox
    }
}
add_action( \'do_meta_boxes\', \'remove_post_metaboxes\');
因此,您可以决定以哪种功能为目标(因为WP更喜欢使用当前的用户,而不是特定的角色),然后,您只需要知道元盒的名称(在看到要删除/隐藏的元盒的帖子中使用类似于Inspect元素的内容来查找其名称-上面的示例是我为所有非编辑器删除的元盒),然后再知道是否要将其从帖子或页面中删除,以及它通常所在的位置。将此添加到子主题的函数中。php文件。

更多信息请参见:https://developer.wordpress.org/reference/functions/remove_meta_box/

相关推荐

正在尝试获取wp-includes/capabilities.php中非对象的属性

在调试中,我每分钟都会收到以下通知序列。日志:[23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1022 [23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/