Setzen Sie Edit Post-Metaboxen inaktiv

Ich möchte nur bestimmte Metaboxen inaktiv setzen. Ich weiß über remove_meta_box (), aber ich möchte sie nur inaktiv machen, damit der Benutzer sie immer noch über die Registerkarte “Optionen” oben aktivieren kann.

Ich habe das Adminimize-Plugin ( http://wordpress.org/extend/plugins/adminimize/ ) verwendet und es funktioniert so, wie ich es mir erhofft hatte. Basierend auf der Benutzerrolle werden die gewünschten Meta-Boxen deaktiviert, aber nicht entfernt. Weißt du, wie das Plugin es macht?

Solutions Collecting From Web of "Setzen Sie Edit Post-Metaboxen inaktiv"

Es gibt einen default_hidden_meta_boxes-Filter, mit dem Sie das tun können. Es wird so genannt:

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

Aktualisieren:

Entschuldigung, ich beschönige es irgendwie, dass Sie gesagt haben, dass Sie über “remove_meta_box” -function sowieso weiß ich habe ein wenig graben und ich schaute auf das Adminimize-Plugin und sah, wie es funktioniert und im Grunde fügt es ein css style = “display none;” zu dieser Metabox gemäß den Optionen, die Sie im Optionsfeld festlegen, indem Sie für jede Schleife eine Schleife verwenden, um alle Rollen zu durchlaufen, damit Sie Folgendes tun können:

 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 ''; echo $out; break; } } 

ich hoffe das hilft.