排除管理栏以显示化身自定义

时间:2013-04-09 作者:chowwy

我正在自定义WP头像(以适应网格),不希望头像自定义显示在管理栏下拉列表、仪表板或网站上(当管理栏可见时)。

我已经在函数中使用此代码从仪表板中排除了化身更改。php:

function foo_change_avatar($class) {
    if(!is_admin()) {
           // avatar customization code
    }
    return $class;
}
add_filter(\'get_avatar\',\'foo_change_avatar\');
当管理栏在站点上可见时,如何防止我的自定义显示在管理栏下拉列表中?

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

WP_Admin_Bar::add_menus() 类方法,您将找到以下操作:

add_action( \'admin_bar_menu\', \'wp_admin_bar_my_account_menu\', 0 );
add_action( \'admin_bar_menu\', \'wp_admin_bar_my_account_item\', 7 );
两个相应的回调使用get_avatar().

为了防止在管理栏中更改头像,我们可以删除foo_change_avatar 在这些回调之前进行筛选,然后在管理栏呈现wp_after_admin_bar_render 过滤器(看起来该过滤器未在Codex中记录):

add_action( \'admin_bar_menu\', function(){
    remove_filter(\'get_avatar\',\'foo_change_avatar\');
},0); 

add_action( \'wp_after_admin_bar_render\', function(){
    add_filter(\'get_avatar\',\'foo_change_avatar\');
});
因此,管理菜单栏的这一部分:

enter image description here

其中get_avatar() 使用时,应将其从更改中排除。

我们也可以使用admin_bar_menu 优先级大于的筛选器7 而不是wp_after_admin_bar_render 滤器

结束

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu