将颜色添加到现有调色板,而不替换它

时间:2020-02-04 作者:leemon

使用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\',
    ),
) );
我的问题是,有没有一种方法可以在不完全替换现有调色板的情况下(例如,通过子主题)向现有调色板添加颜色?

提前感谢

3 个回复
SO网友:Vitauts Stočka

可以合并选项板

$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);

SO网友:Tim Elsass

最好的方法是公开数据,以便对其进行修改。您可以通过添加筛选器来完成此操作:

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;
} );

SO网友:Rhys Wynne

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

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

e、 g。

/**
 * 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\' 在主题内调用,并确保在后面调用。

相关推荐

WooThemes-供应商/预订-允许供应商管理资源

我正在尝试从WooThemes为bookings插件带来新功能。在组合预订和供应商插件时,不允许供应商用户管理资源(资源是自定义帖子)。我将新功能添加到资源自定义帖子中,然后将这些功能添加到供应商角色(通过用户角色插件)现在,资源显示在供应商角色的管理菜单中,但当我尝试添加新资源时,会出现“您无权访问此页面”错误。我添加的新功能:https://i.stack.imgur.com/OCDlV.png添加到角色的功能:https://i.stack.imgur.com/5t696.png使用角色登录时显示的