获取当前活动的WP配色方案

时间:2013-12-23 作者:EHerman

是否有方法返回当前活动的配色方案?

这是如何注册新的管理配色方案

<?php register_admin_color_schemes(); ?> 
有没有类似的get_admin_color_scheme(); 将返回哪个处于活动状态?

4 个回复
最合适的回答,由SO网友:fuxia 整理而成

当前管理员配色方案是用户设置,您可以通过以下方式获取其值:

$current_color = get_user_option( \'admin_color\' );
查看函数admin_color_scheme_picker() 在里面wp-admin/includes/misc.php 有关用法示例。

SO网友:Julian F. Weinert

如果你想在PHP中访问颜色,你必须做一些小技巧。在文件中,从toschos answer 他们使用全局变量$_wp_admin_css_colors. 这在运行时的任何时候都会被销毁。

实际上,我找到了正确的钩子来复制它:

<?php
    $admin_colors;
    add_action(\'admin_head\', function(){global $_wp_admin_css_colors; $admin_colors = $_wp_admin_css_colors;});
?>
因此,现在我可以访问脚本中任意点的颜色,如下所示:

$admin_colors[get_user_option(\'admin_color\')][\'colors\']; // array(0 => #222, 1 => #333, 2 => #0074a2, 3 => #2ea2cc)
以下是$admin_colors 演示结构:

$admin_colors = Array
(
    [fresh] => stdClass Object
    (
        [name] => Default
        [url] => https://example.com/wordpress/wp-admin/css/colors.min.css
        [colors] => Array
        (
            [0] => #222
            [1] => #333
            [2] => #0074a2
            [3] => #2ea2cc
        )
        [icon_colors] => Array
        (
            [base] => #999
            [focus] => #2ea2cc
            [current] => #fff
        )
    )
)

SO网友:Sven

每个用户都可以设置自己的管理员配色方案,因此您也可以根据用户ID获取配色方案:

get_user_option( \'admin_color\', get_current_user_id() );
进一步阅读:WP 3.8 Default Admin Colour For All Users

SO网友:mohamdio

我认为这是获取或设置当前管理员配色方案的简单方法,请参见代码:

Set the default admin color scheme:

<?php

/**
 * Set the default admin color scheme for WordPress user.
 */
add_filter(\'get_user_option_admin_color\', \'set_default_admin_color\');
function set_default_admin_color($result)
{

    // set new default admin color scheme
    $result = \'midnight\';

    // return the new default color
    return $result;

}
Get the current admin color scheme:

/**
 * Get the current admin color scheme from WordPress user.
 */
add_filter(\'get_user_option_admin_color\', \'get_current_admin_color\');
function get_current_admin_color($result)
{

    global $_wp_admin_css_colors;

    // get current admin color scheme name
    $current_color_scheme = $result;

    // get all available colors from scheme name
    $colors = $_wp_admin_css_colors[$current_color_scheme];

    // now you can use this colors or store it
    // var_dump($colors);

    // important: we should return the default color scheme
    return $result;

 }
Get all available admin colors schemes:

/**
 * Get all available admin colors schemes from WordPress user.
 */
add_filter(\'get_user_option_admin_color\', \'get_all_admin_colors\');
function get_all_admin_colors($result)
{

    global $_wp_admin_css_colors;

    // get all available color schemes
    $colors = $_wp_admin_css_colors;

    // now you can use this color schemes or store it
    // var_dump($colors);

    // important: we should return the default color scheme
    return $result;

}
@另见此处要点:https://gist.github.com/mohamdio/bb9a1a18446aca257935846d217060e9

结束

相关推荐

If statement for admin page

我该怎么写if 仅当我进入此页面时才显示特定代码的条件:/wordpress/wp-admin/post-new.php?post_type=slideshow 这就是我想要得到的;)感谢Krzysiek!function plu_admin_enqueue($hook) { $screen = get_current_screen(); if ( \'post.php\' == $hook && $screen->post_type == \