Настройка позиции и видимости панелей редактирования администратора и метабоксов для ВСЕХ пользователей и администраторов

10

Моя настройка WP 3.3 включает несколько типов записей и настраиваемые панели редактирования с плагином Advanced Custom Fields (который создает много метабоксов) и другими плагинами, такими как панель метабоксов SEO, соединения Scributs Posts2Posts и многое другое.

Проблема в том, что порядок появления этих панелей часто довольно случайный (даже если Adavanced Custom Fields предлагает какой-то порядок, но это не всегда работает, так как другие плагины не имеют его, и, более того, я мог бы захотеть изменить metabox должности по типам постов).

Теперь Wordpress позволяет каждому администратору / пользователю с соответствующими правами размещать метабоксы в панелях редактирования так, как он / она хочет. Однако ... каждый админ должен сам устроить !! Разве нет способа подготовить порядок по умолчанию / фиксированный порядок или позволить superadmin или одному администратору, в частности, установить положение панелей для КАЖДОГО?

У меня есть как минимум 4 администратора и несколько редакторов / авторов ... не имеет смысла настраивать их панели для входа в систему с КАЖДОЙ из своих учетных записей ... это глупо и отнимает много времени, и сбивает с толку пользователей, не разбирающихся в Wordpress ,

Есть ли какой-нибудь плагин или фрагмент кода, который может помочь моему делу?

Спасибо

unfulvio
источник
кто-то задавал те же вопросы на форумах wp 1 год назад, его тема осталась без ответов, не была решена, и некоторые администраторы закрыли
ветку

Ответы:

7

Вы можете удалить мета-блоки по умолчанию с помощью remove_meta_box и повторно добавить их в другую позицию с помощью add_meta_box:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Ответ выше из следующей темы: Как изменить положение мета-блоков WP по умолчанию?

ОБНОВИТЬ

Если основное разочарование заключается только в количестве доступных мета-блоков, и вы не думаете, что каждому пользователю нужны все блоки, вы можете скрыть их от нижестоящих ролей или всех ролей, используя следующий код, добавленный в файл functions.php. ПРИМЕЧАНИЕ. - Этот метод просто скрывает метабокс и не деактивирует и не удаляет их.

//Hide Post Page Options from all except Administrator
if (!current_user_can('administrator')){
function hide_post_page_options() {
global $post;
$hide_post_options = "<style type=\"text/css\"> #wptotwitter_div, wpseo_meta, #al2fb_meta, #misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section, .al2fb_post_submit, #slugdiv, #edit-slug-box, #screen-options-link-wrap { display: none; }</style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}

//Hide Post Page Options from ALL users
function hide_all_post_page_options() {
global $post;
$hide_all_post_options = "<style type=\"text/css\"> #taxonomy-category li.hide-if-no-js, #commentstatusdiv, #wypiekacz_sectionid, #postexcerpt, #trackbacksdiv, #postcustom, #yarpp_relatedposts { display: none !important; }</style>";
print($hide_all_post_options);
}
add_action( 'admin_head', 'hide_all_post_page_options'  );

По сути, вам просто нужно ввести идентификатор Div или класс, разделенные запятой. Я просто оставил свой там, чтобы показать, что все виды мета-блоков и областей могут быть скрыты.

#wptotwitter_div - WP to Twitter plugin
#wpseo_meta - Wordpress SEO by Yoastplugin
#al2fb_meta, .al2fb_post_submit - Add Link to Facebookplugin
#misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section - Default Wordpress Publish Status and Visibility
#slugdiv, #edit-slug-box - The post slug
#screen-options-link-wrap - The "Screen Options" tab at the top of the page
#taxonomy-category li.hide-if-no-js - The "Most Used" categories tab
#commentstatusdiv - The comments on the post
#wypiekacz_sectionid - Wypiekacz plugin
#postexcerpt - Post excerpt
#trackbacksdiv - Trackbacks
#postcustom - Custom post fields
#yarpp_relatedposts - Yet Another Related Posts Plugin

(Я поместил примеры в «код», потому что SE использует # для представления заголовка)

Я думал, что выкину это вам, потому что, как и вы, я очень расстроился из-за всех мета-блоков, но, в конечном счете, я думаю, что это было просто количество нежелательных блоков. Для "автора" на моем веб-сайте это теперь очень упрощено: заголовок, контент, сохранение в виде черновика, публикация сейчас или график публикации, теги, категории и избранные изображения ... Никаких помех.

Трэвис Пфланц
источник
Это не решает мою проблему, я хотел бы сделать это, копируя мои настройки wysiwyg для всех пользователей (поэтому я установил внешний вид панелей раз и навсегда); причина: некоторые плагины добавляют свои собственные метабоксы; также для разных типов постов я хочу разместить метабоксы соответственно. Add_meta_box имеет только нормальный / высокий / низкий ... со многими множеством метабоксов, которые не помогают. Расширенные настраиваемые поля, по крайней мере, имеют порядковый номер, но они плохо работают при наличии других метабоксов. Лучший способ сделать это был бы wysiwyg ...
unfulvio
Используете ли вы все дополнительные мета-блоки, создаваемые плагинами? Я спрашиваю, потому что для меня все ненужные метабоксы меня всегда расстраивают. Если это на самом деле ваш случай, я сделал ОБНОВЛЕНИЕ выше, возможно, если вы просто скроете поля, которые не нужны для определенных ролей пользователей, ваша проблема может быть устранена ... Это, безусловно, помогло мне!
Трэвис Пфланц
Почему бы вам не удалить метабоксы пользователем, а не просто скрыть их с помощью стиля?
Стивен Харрис
Не все, что я удаляю, является мета-блоком, некоторые являются частью мета-блоков, поэтому я решил, что я бы использовал одну функцию, а не две.
Трэвис Пфланц
Трэвис, спасибо, что потратил больше на это. Однако решение CSS не решает проблему перемещения метабоксов (ваше предыдущее решение по фильтрации и перемещению частично делает это). Как я упоминал ранее, в моей настройке есть много пользовательских типов постов со специальными метабоксами, которые я сделал, и они должны быть там. На самом деле я очень мало хочу скрыть (но они будут полезны для некоторых администраторов, поэтому я не хочу удалять их навсегда, а скрывать с помощью CSS не очень хороший шаг). Я еще не нашел удовлетворительного решения этой проблемы. В любом случае, спасибо за усилия.
unfulvio
1

Вы смотрели в плагин Администрирование ?

Это позволяет вам активировать / деактивировать мета-блоки для каждой роли пользователя, а также настроить положение. Для его настройки требуется немного, и документация приличная, хотя местами местами, но она должна быть в состоянии справиться с тем, что вы описываете.

JCL1178
источник
Этот плагин не позволяет вам «настраивать позицию», только видимость. Это очень хороший плагин, хотя ..
13
Я признаюсь, что не слишком внимательно посмотрел на плагин, но если он может манипулировать одним, он, вероятно, может быть создан для манипулирования другим с помощью некоторых дополнений кода. Делает для хорошей точки запуска.
JCL1178