这有点棘手,我不知道是否有最好的解决方案。然而,这是可行的。
诀窍是,我和你用同样的钩子,wp_before_admin_bar_render
. 在那里,我获取所有元素,并检查它们是否有父元素my-sites-list
.
如果他们这样做了,我会切换到博客,获取当前博客的语言,创建标题和call restore_current_blog().
之后,我创建了一个新的管理栏项目,其中包含除新标题以外的所有原始信息,删除旧标题,然后插入新标题。
问题/关注点到目前为止,我还不知道是否有办法在不切换到博客语言的情况下获得博客语言可能有一个过滤器用于生成管理栏菜单项。在那里过滤这些标题要比事后处理好得多功能
function f711_tweaked_admin_bar() {
global $wp_admin_bar;
$elements = $wp_admin_bar->get_nodes();
foreach( $elements as $element ) {
if ( $element->parent == \'my-sites-list\' ) {
// reduce the adminbar Id to the blog ID
$idinteger = str_replace( \'blog-\', \'\', $element->id );
// Switch to the Blog, get the language option. If empty, it\'s English
switch_to_blog( $idinteger );
if ( get_option( \'WPLANG\' ) != "" ) {
$language = get_option( \'WPLANG\' );
} else {
$language = \'en_EN\';
}
//set the new title for the Admin Menu
$newtitle = $element->title . \' - \' . $language;
restore_current_blog();
// define new menu element
$args = array(
\'title\' => $newtitle,
\'id\' => $element->id,
\'parent\' => $element->parent,
\'href\' => $element->href,
);
// remove the old one
$wp_admin_bar->remove_node( $element->id );
// add the new one right afterwards.
$wp_admin_bar->add_node( $args );
}
}
}
add_action( \'wp_before_admin_bar_render\', \'f711_tweaked_admin_bar\' );