要删除的项目是一个;节点;。查看WP工具栏的生成HTML时,列表项的ID(<li>
) 包含节点。
因此,在这种情况下;添加新的“;工具栏项,您将在HTML中看到以下内容:
<li id="wp-admin-bar-new-content" class="menupop">
“之后的一切”;wp管理栏-“;ID中是节点的名称。在这种情况下,“;新内容;。
有两种方法可用于删除节点。首先,您可以使用admin_bar_menu
行动钩,用于移除;“新内容”;节点如下:
add_action( \'admin_bar_menu\', function( $wp_admin_bar ) {
$wp_admin_bar->remove_node( \'new-content\' );
},999);
或者您可以使用
wp_before_admin_bar_render
行动挂钩:
add_action( \'wp_before_admin_bar_render\', function() {
global $wp_admin_bar;
$wp_admin_bar->remove_node( \'new-content\' );
},999);
您需要添加一些额外的逻辑,因为您希望为特定的用户角色执行此操作。我建议您在这里使用;“能力”;而不是一个“;角色;。你会在网上看到很多不正确使用的例子
current_user_can()
检查角色名称。这只能用于检查功能。(
See this answer.)
您没有指明要限制节点的角色(或功能),但例如,假设您希望节点仅在用户具有;“编辑帖子”;能力。然后,您的操作函数将如下所示:
add_action( \'admin_bar_menu\', function( $wp_admin_bar ) {
if ( ! current_user_can( \'edit_posts\' ) ) {
$wp_admin_bar->remove_node( \'new-content\' );
}
},999);
如果用户没有“编辑帖子”功能,则会删除“新内容”节点。