À partir de line 474
sur /wp-includes/admin-bar.php
, une fonction est déclarée comme suit:
function wp_admin_bar_new_content_menu( $wp_admin_bar )
Cela génère l'élément de menu + New
ainsi que tous les types de publication personnalisés pour lesquels un utilisateur dispose de la capacité edit_posts
. L'option actuelle du menu supérieur, + New
, prend par défaut la valeur posts
, car il s'agit du premier appelé dans le tableau (je crois que c'est ainsi que cela fonctionne). J'aimerais en fait changer ce premier lien + New
en quelque chose d'autre. Dans notre configuration, nous devons donner aux utilisateurs la capacité edit_posts
de gérer les pages Options de champs personnalisés avancés, mais ne leur donne pas accès aux publications elles-mêmes (ce que nous devions simplement cacher dans le système de menus). Un peu funky, mais c’est plus un problème d’utilisabilité pour nous.
Mis à part tout le fouillis que j'ai dit ci-dessus, pouvez-vous modifier un lien de menu existant en fonction de l'ID de l'élément lui-même (qui est new-content
dans ce cas) ou aurais-je besoin de détruire et de reconstruire le menu lui-même? Je cherche simplement à changer cet attribut href
en #
. Merci!
Je n'ai pas travaillé avec le admin-bar avant. Cependant, j'ai trouvé votre question intéressante et j'ai décidé d'y jeter un coup d'œil. Si vous ajoutez une fonction pour gérer le crochet d'action 'admin_bar_menu' et que vous définissez une priorité supérieure à 70, vous aurez accès aux nœuds raw admin_bar_menu où vous pourrez modifier les propriétés auxquelles vous tentez d'accéder. Vous trouverez ci-dessous une série d’exemples détaillés sur la manière de manipuler la barre de menus d’admin à partir du fichier functions.php de votre thème.
add_action( 'admin_bar_menu', 'customize_my_wp_admin_bar', 80 );
function customize_my_wp_admin_bar( $wp_admin_bar ) {
//Get a reference to the new-content node to modify.
$new_content_node = $wp_admin_bar->get_node('new-content');
// Parent Properties for new-content node:
//$new_content_node->id // 'new-content'
//$new_content_node->title // '<span class="ab-icon"></span><span class="ab-label">New</span>'
//$new_content_node->parent // false
//$new_content_node->href // 'http://www.somedomain.com/wp-admin/post-new.php'
//$new_content_node->group // false
//$new_content_node->meta['title'] // 'Add New'
//Change href
$new_content_node->href = '#';
//Update Node.
$wp_admin_bar->add_node($new_content_node);
//Remove an existing menu item.
$wp_admin_bar->remove_menu('new-post');
// Properties for new-post node:
//$new_content_node->id // 'new-post'
//$new_content_node->title // 'Post'
//$new_content_node->parent // 'new-content'
//$new_content_node->href // 'http://www.somedomain.com/wp-admin/post-new.php'
//$new_content_node->group // false
//$new_content_node->meta // array()
// Adding a new custom menu item that did not previously exist.
$wp_admin_bar->add_menu( array(
'id' => 'new-custom-menu',
'title' => 'Custom Menu',
'parent'=> 'new-content',
'href' => '#custom-menu-link',)
);
}
Si vous ajoutez ceci à votre fichier functions.php, notez les modifications suivantes dans la barre de menus de l'administrateur:
Meilleures salutations,
David Carroll
Pour ajouter à David Carroll une réponse géniale (merci!), Je dois dire que pour obtenir le nom du nœud (nom du slug) du menu de la barre d’administration existant et pour pouvoir les modifier, vous devez regarder dans le code de cette nouvelle menu de contenu.
Les ul#wp-admin-bar-new-content-default li
ont tous un identifiant qui se termine par leur nom. Exemple: li#wp-admin-bar-new-post
ou li#wp-admin-bar-new-media
où new-post
ou new-media
est le nom que vous pouvez utiliser dans la fonction get_node()
.
Pour mon but, j'ajoute pour changer le nom du lien en nouveau Post par un nom personnalisé.
//Get a reference to the new-post node to modify.
$new_post_node = $wp_admin_bar->get_node('new-post');
//Change title
$new_post_node->title = __('Interventions', 'NAME-OF-YOUR-THEME');
//Update Node.
$wp_admin_bar->add_node($new_post_node);