J'aimerais changer l'endroit où le lien "Howdy" vous mène lorsque vous cliquez dessus.
J'ai un site Web avec buddypress et au lieu d'amener les utilisateurs à leur page de profil, je veux les amener à leur onglet "Activité".
Comment puis-je changer le lien?
Merci, Kat
Ce n'est pas bien documenté, mais les méthodes add_node
et add_menu
de la classe WP_Admin_Bar
peuvent être utilisées non seulement pour créer un nouveau menu ou des nœuds, mais également pour mettre à jour un menu ou un nœud existant.
Je suis donc allé de l'avant et j'ai repéré le code que WordPress utilise initialement pour créer cet élément dans la barre d'administration, je l'ai répliqué, puis apporté des ajustements au texte de Howdy et utilisé un exemple de lien vers Google. Faites simplement vos propres ajustements en fonction du code de l'exemple.
Exemple de code:
Mettre à jour le menu du compte d'utilisateur dans la barre d'administration
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' );
J'espère que ça aide, amusez-vous. :)
Voici un moyen plus simple et plus propre ... appelez le nœud requis, utilisez la pièce requise et remplacez ce que vous souhaitez mettre à jour.
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);