web-dev-qa-db-ja.com

MP6で管理バーの配色を変更する方法/ WP 3.8フロントエンド?

すべてのユーザーに対してデフォルトの配色を変更する必要があります。私のサイトの管理バーは、ゲストを含むすべてのユーザーにとって見やすいです。デフォルトの黒の配色は私のデザインでは美しくないので、私はコーヒーの配色でそれを変えたいと思います。これを行う方法はありますか?

私はすでに見つけました

add_filter('get_user_option_admin_color','change_admin_color');
function change_admin_color($result) {
   return 'coffee';
}

しかし、それはユーザーのために別の配色を選択する機能を無効にします。そしてまず第一にそれはログインしているユーザーのためだけに働く。

5
okonik

現時点では(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' )
        );
    } );

コアはそれをしないことを選んだので、それはテストされておらず、スタイルの非互換性などのリスクがあります。

4
Rarst

あなたはプロファイルの更新時にテーマを設定することができ、それが存在する場合は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。 未テスト

1
gmazzap

https://wordpress.org/plugins/admin-bar-color/ works、軽量で、よく書かれており、GitHubにあります。

私は自分のプロファイルを一度保存​​し直す必要がありましたが、今度は私のフロントエンド管理バーの色が/wp-admin/と一致します。

0
lkraav