问题描述

我对 3.8 的新配色方案感到惊讶,虽然经典的 3.7 主题已经消失,但我想将新的”Light” 配色方案设置为所有用户的默认配置,但同时仍允许他们更改主题,如果他们希望在他们的用户个人资料中。

有没有人设法设置一个功能来设置所有用户的默认值?我搜索过,但找不到什么,因为这是新的,3.8 codex 没有完全写。

最佳解决方案

您可以在 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' );

更新 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 处理默认管理颜色方案:Default Admin Color Scheme

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。