WP 3.8 Cor padrão do administrador para todos os usuários

10

Estou surpreso com o novo esquema de cores da versão 3.8 e, embora o tema clássico 3.7 tenha desaparecido, gostaria de definir o novo esquema de cores "Leve" como padrão para todos os usuários, mas, ao mesmo tempo, ainda permita que eles alterem o tema, se desejar, em seu perfil de usuário.

Alguém conseguiu criar uma função para definir o padrão para todos os usuários? Eu procurei, mas não consigo encontrar nada, pois isso é tão novo, o codex 3.8 não está totalmente escrito.

Sol
fonte

Respostas:

14

Você pode definir (em termos de força) uma cor padrão functions.phpcomo esta:

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

Atualização: Os seguintes esquemas de cores estão disponíveis por padrão no WP 3.8

  • fresco
  • leve
  • azul
  • café
  • ectoplasma
  • meia noite
  • oceano
  • nascer do sol

Bônus (encontrado em wpmudev ): desative as Opções do esquema de cores do administrador para garantir que os usuários não possam voltar para outra cor:

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Atualização 2: Como Rarst apontou, o filtro acima forçará um esquema de cores específico em vez de definir um padrão mutável. A solução para isso é executar uma ação apenas uma vez (por exemplo, na configuração / registro do usuário), para que o usuário possa decidir e alterar a cor sozinho:

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

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

}

Atualização 3: Ok, então mais uma tentativa :)

A idéia é adicionar metadados extras do usuário (consulte custom_admin_color_scheme) assim que o usuário atualizar o perfil; contanto que o campo não esteja definido true, alteraremos o esquema de cores padrão do administrador para um esquema de cores de nossa escolha:

// 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');

}

Atualização 4: Finalmente, também existe um plugin muito bom no wordpress.org para lidar facilmente com os esquemas de cores padrão do administrador: Esquema de cores padrão do administrador

Sven
fonte
2
Isso não forçará um esquema específico em vez de definir o padrão de alteração?
Rarst
@Rarst Bom ponto! Atualizei minha resposta e adicionei uma ação para alterar apenas a cor na configuração; depois que ele é até o usuário :)
Sven
Na verdade - isso não é muito útil para usuários já registrados. Suponho que não exista uma maneira de realmente forçá-los a fazer uma escolha no próximo login (acho que seria muito trabalho).
Sol
@Sol Basta verificar se já existe uma configuração e se é um dos esquemas de cores predefinidos de 3.8. Se agora, apenas exit( wp_redirect( admin_url( 'profile.php' ) ) );(não tenho certeza profile.php) redirecione-os para o perfil e adicione um admin_noticeque eles devem alterar. Feito desta forma, eles são forçados como o redirecionamento vai acontecer até esta definição é feito :)
kaiser
Oi Kaiser, parece perfeito, você é capaz de fornecer um código de exemplo?
Sol