将编辑帖子元框设置为非活动

时间:2010-12-10 作者:Joe

我只是想将某些元框设置为非活动状态。我知道remove_meta_box(),但我只想让它们处于非活动状态,这样用户仍然可以从顶部的屏幕选项选项卡重新打开它们。

我使用了Adminimize插件(http://wordpress.org/extend/plugins/adminimize/) 它以我希望的方式运行。根据用户角色,它会停用所需的元框,但不会删除它们。你知道这个插件是怎么做的吗?

2 个回复
SO网友:Denis de Bernardy

有一个默认的\\u hidden\\u meta\\u box过滤器,允许您这样做。它被称为:

$hidden = apply_filters(\'default_hidden_meta_boxes\', $hidden, $screen);

SO网友:Bainternet

Update:

抱歉,不知怎的,我弄糊涂了,你说你知道“remove\\u meta\\u box”的功能。我做了一些挖掘,查看了Adminimize插件,了解了它的工作原理,基本上它添加了一个css style=“display none;”根据您在选项面板中设置的选项,使用for-each循环来运行所有角色,以便执行以下操作:

function get_all_user_roles() {
    global $wp_roles;

    $user_roles = array();

    if ( isset($wp_roles->roles) && is_array($wp_roles->roles) ) {
        foreach ($wp_roles->roles as $role => $data) {
            array_push($user_roles, $role);
            //$data contains caps, maybe for later use..
        }
    }

    return $user_roles;
}




// return string The name of the current role
function get_current_user_role() {
    global $wp_roles;
    $current_user = wp_get_current_user();
    $roles = $current_user->roles;
    $role = array_shift($roles);
    return isset($wp_roles->role_names[$role]) ? translate_user_role($wp_roles->role_names[$role] ) : false;
}

//hook admin CSS
add_action(\'admin_print_styles\', \'meta_box_css_hack\');
//the magic happens here
function meta_box_css_hack(){
        $user_roles = get_all_user_roles();
    foreach ($user_roles as $role) {
        //first we check if its curent user 
      if ($role = get_current_user_role()){
       /* each role has it own option in the option database witch is an array that holds the name of the meta-boxes div id. */
        $disabled_metaboxes_post_ = get_option(\'disable[$role]\');
        echo \'<style type=text/css">\';
        $out = \'\'
        foreach   ($disabled_metaboxes_post_ as $meta_id)
        {
            $out .= \'#\'.$meta_id . \', \';
        }
        $out = substr($out,0,-2);
        }
        $out .= \' { display: none !important;} </style>\';
        echo $out;
        break;
    }
}
我希望这有帮助。

结束

相关推荐

如何在菜单管理管理屏幕中添加自定义Metabox?

虽然我非常感谢wordpress核心团队最终集成了本机菜单管理功能,但我对一些我想更改的关键元素感到失望。我需要一种显示页面的方式,这种方式与显示分级类别的方式相同,而不是显示在列表中,并且我需要一种手动包括可以添加到菜单的链接的方式。如何做到这一点?提前感谢UPDATED所以,以下是我想做的两件事。当前,如果您转到默认的wordpress“菜单管理”管理屏幕,您可以选择在左侧显示“页面”元框。这里的问题是,当您单击“查看全部”选项卡时,没有一个页面的顺序正确,并且如果适用,它们也没有缩进。CURRENT