如何修改 WordPress 顶部管理栏
WordPress 顶部的管理栏(Admin Bar)为登录用户提供了便捷的访问入口。你可以通过代码对其进行修改,例如隐藏、按用户角色显示、移除默认菜单项或添加自定义菜单。
1. 完全隐藏管理栏
将以下代码添加到主题的 functions.php 文件中,可以完全禁用管理栏对所有用户的显示。
add_filter( 'show_admin_bar', '__return_false' );
2. 仅对管理员显示
如果你希望管理栏只对管理员(Administrator)角色可见,而对其他注册用户(如订阅者、编辑者)隐藏,可以使用以下代码。请注意,is_admin() 条件通常用于判断是否在后台界面,而管理栏在前台也会显示。更常见的做法是直接检查用户权限。
if ( ! current_user_can( 'administrator' ) ) {
add_filter( 'show_admin_bar', '__return_false' );
}
3. 移除默认菜单项并添加自定义项
你可以移除管理栏中不需要的默认菜单(如 WordPress 徽标、关于、新建内容等),并添加自己的菜单项。这需要在 wp_before_admin_bar_render 钩子中操作。
function mytheme_admin_bar_menu() {
global $wp_admin_bar;
// 移除默认菜单项
$wp_admin_bar->remove_menu( 'wp-logo' ); // WordPress 徽标及子菜单
$wp_admin_bar->remove_menu( 'new-content' ); // “新建”菜单
$wp_admin_bar->remove_menu( 'comments' ); // 评论
$wp_admin_bar->remove_menu( 'appearance' ); // 外观
$wp_admin_bar->remove_menu( 'updates' ); // 更新
// 添加一个自定义菜单项
$wp_admin_bar->add_menu( array(
'id' => 'about-mytheme',
'title' => '@ 联系我们',
'href' => 'https://example.com/contact'
) );
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_menu' );
注意: 上述代码对所有能看到管理栏的用户生效。如果你只想对管理员进行此修改,可以在函数开头添加权限检查:if ( ! current_user_can( 'administrator' ) ) { return; }。
4. 添加带有子菜单的自定义菜单
你还可以创建一个包含子菜单的父级菜单,构建更复杂的导航结构。
function mytheme_admin_bar_custom_menu() {
global $wp_admin_bar;
// 添加父菜单
$wp_admin_bar->add_menu( array(
'id' => 'custom_menu',
'title' => '快捷导航'
) );
// 在父菜单下添加子菜单
$wp_admin_bar->add_menu( array(
'parent' => 'custom_menu',
'id' => 'my_orders',
'title' => '我的订单',
'href' => admin_url( 'admin.php?page=orders' ),
'meta' => array( 'target' => '_blank' ) // 在新标签页打开
) );
// 可以继续添加更多子菜单...
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_custom_menu' );
关于 meta 参数: meta 数组用于设置链接的 HTML 属性。常见的键包括:
target: 指定链接打开方式(如_blank)。title: 链接的标题属性(鼠标悬停提示)。class: 为菜单项添加 CSS 类。html: 允许在菜单项内使用自定义 HTML。
所有代码修改都应添加到当前主题的 functions.php 文件中,或通过自定义功能插件实现。修改前建议进行备份,并在非生产环境测试。