在WordPress 6.0中从用户的个人资料页面中删除配色方案选项

icomxhvb  于 2023-05-12  发布在  WordPress
关注(0)|答案(3)|浏览(242)

我总是在一个必须使用的插件中使用这段代码来删除整个配色方案部分:

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

可惜的是,在WordPress 6.0中,这个功能不再起作用了。我发现Core的add_action( 'admin_color_...recently moved,从default-filters.php文件到admin-filters.php文件,但我不确定为什么和如何我必须更新上面的片段才能让它再次工作。

pvcm50d1

pvcm50d11#

要使remove_action()调用有效,需要在添加了要删除的操作之后、该操作运行之前调用它。
WordPress在admin-filters.php中添加admin_color_scheme_picker操作,然后在user-edit.php管理页面模板中运行该操作。
要在用户配置文件页面上调用admin_color_scheme_picker操作之前删除它,可以使用admin_head-profile.php钩子运行remove_action()调用:

add_action( 'admin_head-profile.php', 'wpse_72463738_remove_admin_color_scheme_picker' );

/**
 * Remove the color picker from the user profile admin page.
 */
wpse_72463738_remove_admin_color_scheme_picker() {
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
}

请注意,admin_head-{$hook_suffix}钩子在特定管理页面的head部分触发。在上面的例子中,将hook名称中的$hook_suffix替换为profile.php,使其在用户管理配置文件页面上运行。

ldioqlga

ldioqlga2#

您可以使用user-edit.php中if语句的另一部分来删除更改配色方案的功能。
user-edit.php

<?php if ( count( $_wp_admin_css_colors ) > 1 && has_action('admin_color_scheme_picker' ) ) : ?>

虽然这不是使用remove action函数的直接解决方案,但您可以将$_wp_admin_css_colors global设置为空数组...

add_action( 'admin_init', function () {
    global $_wp_admin_css_colors;
    $_wp_admin_css_colors = [];
} );
ss2ws0br

ss2ws0br3#

除了巴里Ceelen的回答,如果你想删除profile.php和user-edit.php屏幕的admin_color_scheme_picker,你可以做:

add_filter('admin_head',function($class){

        $screen = get_current_screen();
        
        if( in_array($screen->id,array(
        
            'profile',
            'user-edit',
        
        ))){

            // remove color picker
            
            remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker');
        }
});

相关问题