要获取用户注册到的所有博客/子网站,请使用get_blogs_of_user()
$sites = get_blogs_of_user( get_current_user_id() );
这将获取所有未标记为已存档、垃圾邮件或已删除的网站。这同样适用于单站点环境,返回一个具有单个数字键的数组,该数字键具有
stdClass
对象作为值:
$sites = array( 0 => stdClass
userblog_id -> $blog_id
blogname -> get_option(\'blogname\')
domain -> \'\'
path -> \'\'
site_id -> 1
siteurl -> get_option(\'siteurl\')
archived -> 0
spam -> 0
deleted -> 0
);
如果是多站点环境,它将使用
get_blog_details()
获取站点详细信息。
请注意,在get_blog_details()
用于调整返回的详细信息的函数:
$details = apply_filters( \'blog_details\', $details );
请注意,在
get_blogs_of_user()
用于调整返回对象的函数:
return apply_filters( \'get_blogs_of_user\', $blogs, $user_id, $all );
然后,您可以使用以下内容调整管理栏节点:
<?php
/** Plugin Name: WPSE (#165787) Remove Admin Toolbar Comments, Dashboards, Media & Logo */
add_action( \'admin_bar_menu\', \'remove_toolbar_items\', PHP_INT_MAX -1 );
function remove_toolbar_items( $bar )
{
$sites = get_blogs_of_user( get_current_user_id() );
foreach ( $sites as $site )
{
$bar->remove_node( "blog-{$site->userblog_id}-c" );
$bar->remove_node( "blog-{$site->userblog_id}-d" );
}
$bar->remove_node( \'new-media\' );
$bar->remove_node( \'wp-logo\' );
}
注意,上面的插件没有经过测试,所以您可能需要
var_dump( $site );
在
foreach()
循环和
$bar
查看是否正在删除正确的节点(或任何节点)。