使用add_theme_support( 'editor-color-palette' )可以将古腾堡编辑器中的调色板替换为自定义调色板:
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',
),
) );我的问题是,是否有一种方法可以在现有调色板中添加颜色(例如,通过子主题)而不完全替换它?
提前感谢
发布于 2020-02-04 15:53:00
你可以合并调色板
$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);发布于 2021-11-02 15:17:53
要扩展Vitatus的答案,如果您使用的是一个编辑上述内容的子主题或插件,则效果最好。
假设editor-colour-palette是在具有默认优先级的操作中调用的,您可以在此之后调用它(通常调用优先级大于10的after_setup_theme )。
例如:
/**
* 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'的位置,并确保在主题之后调用它。
发布于 2020-02-04 15:53:24
最好的方法是公开数据,这样就可以修改数据了。您可以通过添加一个筛选器来做到这一点:
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中的数据:
add_filter( 'themeLangDomain_editor_color_palette_args', function( $palette ) {
$palette[] = array(
'name' => __( 'Black', 'themeLangDomain' ),
'slug' => 'black',
'color' => '#000000',
);
return $palette;
} );https://wordpress.stackexchange.com/questions/357851
复制相似问题