クリックしたときに[Howdy]リンクが表示される場所を変更したいです。
私はbuddypressのあるWebサイトを持っていますが、代わりに自分のプロフィールページにユーザーを表示するのではなく、自分の[アクティビティ]タブに表示したいと考えています。
リンクを変更するにはどうすればいいですか。
ありがとう、Kat
文書化されていませんが、add_node
クラスのadd_menu
およびWP_Admin_Bar
メソッドは、新しいメニューまたはノードを作成するためだけでなく、既存のメニューまたはノードを更新するためにも使用できます。
そこで私は先に進み、WordPressが最初に管理バーでその項目を作成するために使用したコードを追跡し、それを複製し、そしてハウディテキストを調整し、そしてグーグルへのリンク例を使用しました。サンプルコードに応じて、独自の調整をするだけです。
コード例:
管理バーのユーザーアカウントメニューを更新します
function wpse_98066_before_admin_bar_render() {
global $wp_admin_bar;
if( !method_exists( $wp_admin_bar, 'add_menu' ) )
return;
$user_id = get_current_user_id();
$current_user = wp_get_current_user();
$my_url = 'http://www.google.com';
if ( ! $user_id )
return;
$avatar = get_avatar( $user_id, 16 );
$howdy = sprintf( __('Hey, Nice to see you again, %1$s'), $current_user->display_name );
$class = empty( $avatar ) ? '' : 'with-avatar';
$wp_admin_bar->add_menu( array(
'id' => 'my-account',
'parent' => 'top-secondary',
'title' => $howdy . $avatar,
'href' => $my_url,
'meta' => array(
'class' => $class,
'title' => __('My Account'),
),
) );
}
add_action( 'wp_before_admin_bar_render', 'wpse_98066_before_admin_bar_render' );
私はそれが役に立つことを願っています、楽しんでください。 :)
これはより簡単でクリーンな方法です...必要なノードを呼び出して必要な部分を使用して更新したいものを置き換えます
function np_replace_howdy($wp_admin_bar){
//New text to replace Howdy
$new_text = 'Welcome';
$my_url = 'http://www.google.com';
//Call up the 'my-account' menu node for current values.
$my_account = $wp_admin_bar->get_node('my-account');
//Replace the 'Howdy' with new text with string replace
$new_title = str_replace('Howdy', $new_text, $my_account->title);
//Rebuild the menu using the old node values and the new title.
$wp_admin_bar->add_menu(array(
'id' => $my_account->id,
'parent' => $my_account->parent,
'title' => $new_title,
'href' => $my_url,
'group' => $my_account->group,
'meta' => array(
'class' => $my_account->meta['class'],
'title' => $my_account->meta['title'],
),
));
}
add_action('admin_bar_menu', 'np_replace_howdy', 999);