すべてのユーザーに対してデフォルトの配色を変更する必要があります。私のサイトの管理バーは、ゲストを含むすべてのユーザーにとって見やすいです。デフォルトの黒の配色は私のデザインでは美しくないので、私はコーヒーの配色でそれを変えたいと思います。これを行う方法はありますか?
私はすでに見つけました
add_filter('get_user_option_admin_color','change_admin_color');
function change_admin_color($result) {
return 'coffee';
}
しかし、それはユーザーのために別の配色を選択する機能を無効にします。そしてまず第一にそれはログインしているユーザーのためだけに働く。
現時点では(3.8)配色 フロントエンドの管理バーには適用されません ユーザーがログインしていて、デフォルト以外の配色が選択されている場合でも、まったく問題ありません。
最短の方法はおそらくフロントエンドでエンキューカラースキームを強制することでしょう:
add_action(
'wp_enqueue_scripts',
function () {
wp_enqueue_style(
'color-admin-bar',
admin_url( '/css/colors/coffee/colors.min.css' ),
array( 'admin-bar' )
);
} );
コアはそれをしないことを選んだので、それはテストされておらず、スタイルの非互換性などのリスクがあります。
あなたはプロファイルの更新時にテーマを設定することができ、それが存在する場合はget_user_option_admin_color
をフックする関数からそれを返し、そうでなければデフォルトを返します:
add_action('profile_update', function($user_id) {
// on profile update save the unfiltered color choice in an additional meta
$set = get_user_meta('admin_color', $user_id, true) ? : 'coffee';
update_user_meta($user_id, '_setted_admin_color', $set);
});
add_filter('get_user_option_admin_color','change_admin_color');
function change_admin_color($result) {
$color = 'coffee';
if ( is_user_logged_in() ) { // for nono logged user output default
// get the unfiltered color meta
$setted = get_user_meta( get_current_user_id(), '_setted_admin_color', true );
// if present set color to that
if ( ! empty($setted) ) $color = $setted;
}
return $color;
}
コードにはPHPが必要です5.3。 未テスト 。
https://wordpress.org/plugins/admin-bar-color/ works、軽量で、よく書かれており、GitHubにあります。
私は自分のプロファイルを一度保存し直す必要がありましたが、今度は私のフロントエンド管理バーの色が/wp-admin/
と一致します。