Intereting Posts
Форма контакта 7: wp_mail не работает после обновления до 4.6 перенаправления перенаправления тем template_redirect не работает, по-видимому, без причины Как преобразовать запрос sql в shortcode в wordpress? Поиск файла wordpress в редакторе темы с использованием имени темы WP-CLI: установка субдомена в корневой папке Показать ошибки в пользовательской форме входа Добавить пользовательскую форму в тему Отфильтрованное сообщение, присвоенное категориям Расширение возможностей загрузки / вставки медиафайлов WP Как найти бэкдор взлома Как отображать категорию родителей и категорию детей отдельно для определенной должности? Как получить сообщения с боковой панели для отображения в виде обычной страницы сообщений Редактирование пользовательских ссылок. Разметка меню. Создание меню социальных сетей со связанными значками. ошибка персонализированного типа страницы 404

Установите метаданные Редактировать сообщение неактивно

Я просто хочу установить некоторые мета-ящики неактивными. Я знаю об remove_meta_box (), но я хочу сделать их неактивными, чтобы пользователь мог снова включить их с вкладки параметров экрана вверху.

Я использовал плагин Adminimize ( http://wordpress.org/extend/plugins/adminimize/ ), и он функционирует так, как я надеялся сделать это. На основе роли пользователя он деактивирует мета-поля, которые вы хотите, но не удаляет их. Вы знаете, как это делает этот плагин?

Фильтр default_hidden_meta_boxes, который позволяет вам это сделать. Он называется так:

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

Обновить:

жаль, что я как-то туман, что вы заявили, что знаете о функции «remove_meta_box» в любом случае, я немного поработал, и я посмотрел плагин Adminimize и увидел, как он работает, и в основном он добавляет CSS-стиль = «display none»; в этот мета-окно в соответствии с параметрами, которые вы задали на панели параметров, используя для каждого цикла для выполнения всех ролей, чтобы вы могли сделать что-то вроде этого:

 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; } } 

надеюсь, это поможет.