WP 3.8 Цвет администратора по умолчанию для всех пользователей

10

Я удивлен новой цветовой схемой для 3.8, и хотя классическая тема 3.7 ушла, я хотел бы установить новую цветовую схему «Светлая» в качестве настройки по умолчанию для всех пользователей, но в то же время разрешить им изменять Тема, если они хотят, в своем профиле пользователя.

Кому-нибудь удалось придумать функцию по умолчанию для всех пользователей? Я искал, но ничего не могу найти, так как это так ново, 3.8 Кодекс написан не полностью.

золь
источник

Ответы:

14

Вы можете установить (с точки зрения силы) цвет по умолчанию внутри functions.phpследующим образом:

add_filter( 'get_user_option_admin_color', 'update_user_option_admin_color', 5 );

function update_user_option_admin_color( $color_scheme ) {
    $color_scheme = 'light';

    return $color_scheme;
}

Обновление. Следующие цветовые схемы доступны по умолчанию в WP 3.8.

  • свежий
  • светлый
  • синий
  • кофе
  • флюид
  • полночь
  • океан
  • Восход солнца

Бонус (находится на wpmudev ): отключите параметры цветовой схемы администратора, чтобы пользователи не могли переключиться на другой цвет:

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Update 2: Как Rarst указал фильтр выше, заставить определенную цветовую схему вместо установки изменяемого по умолчанию. Решение этой проблемы состоит в том, чтобы выполнить действие только один раз (например, при настройке / регистрации пользователя), после чего пользователь может самостоятельно выбирать и изменять цвет:

add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
function myplugin_registration_save( $user_id ) {

       update_user_meta($user_id, 'admin_color', 'light');

}

Обновление 3: Хорошо, так что еще одна попытка :)

Идея состоит в том, чтобы добавить дополнительные метаданные пользователя (см. custom_admin_color_scheme), Как только пользователь обновит профиль; до тех пор, пока поле не установлено, trueмы изменим цветовую схему администратора по умолчанию на цветовую схему по нашему выбору:

// add custom user meta data
add_action('personal_options_update', 'save_custom_admin_color_optios');
function save_custom_admin_color_optios( $user_id ) {

    update_user_meta($user_id, 'custom_admin_color_scheme', true);

}

// change default color scheme if not customized
$customized_color_scheme = get_user_option( 'custom_admin_color_scheme', get_current_user_id() );
if ( empty($customized_color_scheme) ) {

    update_user_meta(get_current_user_id(), 'admin_color', 'light');

}

Обновление 4: Наконец, на wordpress.org также есть очень хороший плагин для простой обработки цветовых схем администратора по умолчанию : Цветовая схема администратора по умолчанию

Sven
источник
2
Не будет ли это форсировать конкретную схему, а не устанавливать изменяемые по умолчанию?
Rarst
@Rarst Хороший вопрос! Я обновил свой ответ и добавил действие, чтобы изменить только цвет при настройке; после этого дело за пользователем :)
Sven
На самом деле - это не очень полезно для пользователей, уже зарегистрированных. Я не думаю, что есть способ заставить их сделать выбор при следующем входе в систему (я думаю, это будет большая работа).
Sol
@Sol Просто проверьте, есть ли уже настройка и является ли она одной из предопределенных цветовых схем из 3.8. Если сейчас, просто exit( wp_redirect( admin_url( 'profile.php' ) ) );(не уверен profile.php) перенаправить их в свой профиль и добавить, admin_noticeчто они должны измениться. Сделано таким образом, они вынуждены, так как перенаправление будет происходить до тех пор, пока эта настройка не будет сделана :)
kaiser
Привет Кайзер, звучит отлично, вы можете привести пример кода?
Sol