首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向现有调色板添加颜色,而不替换它

向现有调色板添加颜色,而不替换它
EN

WordPress Development用户
提问于 2020-02-04 15:13:13
回答 3查看 1.6K关注 0票数 3

使用add_theme_support( 'editor-color-palette' )可以将古腾堡编辑器中的调色板替换为自定义调色板:

代码语言:javascript
复制
add_theme_support( 'editor-color-palette', array(
    array(
        'name' => __( 'Strong magenta', 'themeLangDomain' ),
        'slug' => 'strong-magenta',
        'color' => '#a156b4',
    ),
    array(
        'name' => __( 'Light grayish magenta', 'themeLangDomain' ),
        'slug' => 'light-grayish-magenta',
        'color' => '#d0a5db',
    ),
) );

我的问题是,是否有一种方法可以在现有调色板中添加颜色(例如,通过子主题)而不完全替换它?

提前感谢

EN

回答 3

WordPress Development用户

发布于 2020-02-04 15:53:00

你可以合并调色板

代码语言:javascript
复制
$existing = get_theme_support( 'editor-color-palette' );

$new = array_merge( $existing[0], array(
    array(
        'name' => __( 'Strong magenta', 'themeLangDomain' ),
        'slug' => 'strong-magenta',
        'color' => '#a156b4',
    ),
    array(
        'name' => __( 'Light grayish magenta', 'themeLangDomain' ),
        'slug' => 'light-grayish-magenta',
        'color' => '#d0a5db',
    ),
));

add_theme_support( 'editor-color-palette',  $new);
票数 6
EN

WordPress Development用户

发布于 2021-11-02 15:17:53

要扩展Vitatus的答案,如果您使用的是一个编辑上述内容的子主题或插件,则效果最好。

假设editor-colour-palette是在具有默认优先级的操作中调用的,您可以在此之后调用它(通常调用优先级大于10的after_setup_theme )。

例如:

代码语言:javascript
复制
/**
 * Add the pink colour to the site
 *
 * @return void
 */
function wpquestion357851_add_colours()
{

    $existing = get_theme_support('editor-color-palette');

    $new = array_merge($existing[0], array(
        array(
            'name'  => __('Pink', 'twentytwenty'),
            'slug'  => 'pink',
            'color' => '#ff14a7',
        ),
    ));

    add_theme_support('editor-color-palette',  $new);
}
add_action('after_setup_theme', 'wpquestion357851_add_colours', 20);

您可能需要查看主题中调用add_theme_support('editor-color-palette'的位置,并确保在主题之后调用它。

票数 3
EN

WordPress Development用户

发布于 2020-02-04 15:53:24

最好的方法是公开数据,这样就可以修改数据了。您可以通过添加一个筛选器来做到这一点:

代码语言:javascript
复制
add_theme_support( 'editor-color-palette', apply_filters( 'themeLangDomain_editor_color_palette_args', array(
    array(
        'name' => __( 'Strong magenta', 'themeLangDomain' ),
        'slug' => 'strong-magenta',
        'color' => '#a156b4',
    ),
    array(
        'name' => __( 'Light grayish magenta', 'themeLangDomain' ),
        'slug' => 'light-grayish-magenta',
        'color' => '#d0a5db',
    ),
) ) );

然后,子主题或插件可以使用add_filter修改数组,以修改themeLangDomain_editor_color_palette_arg中的数据:

代码语言:javascript
复制
add_filter( 'themeLangDomain_editor_color_palette_args', function( $palette ) {
    $palette[] = array(
        'name' => __( 'Black', 'themeLangDomain' ),
        'slug' => 'black',
        'color' => '#000000',
    );
    return $palette;
} );
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/357851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档