Ejemplo completo
Un complemento rápido (mu-) como ejemplo:
<?php
/** Plugin Name: Add Admin Bar Icon */
add_action( 'admin_bar_menu', function( \WP_Admin_Bar $bar )
{
$bar->add_menu( array(
'id' => 'wpse',
'parent' => null,
'group' => null,
'title' => __( 'Example', 'some-textdomain' ),
'href' => get_edit_profile_url( get_current_user_id() ),
'meta' => array(
'target' => '_self',
'title' => __( 'Hello', 'some-textdomain' ),
'html' => '<p>Hello</p>',
'class' => 'wpse--item',
'rel' => 'friend',
'onclick' => "alert('Hello');",
'tabindex' => PHP_INT_MAX,
),
) );
} );
Lo que hace que el siguiente HTML sea el primer elemento (y, por lo tanto, también hace que nuestra barra de administración sea inútil, pero ese no es el punto de este ejemplo):
<li id="wp-admin-bar-wpse" class="wpse--item">
<a class="ab-item" tabindex="9223372036854775807" href="http://astro.dev/wp-admin/profile.php" onclick="alert(\'Hello\');" target="_self" title="Hello" rel="friend">Example</a>
<p>Hello</p>
</li>
Ahora que tenemos una base, podemos preocuparnos por ...
Agregar iconos
La triste noticia: no hay una manera fácil de hacerlo. Al menos no sin agregar su propia hoja de estilo. Como puede leer (en el código), están sucediendo algunas cosas: antepuse el HTML necesario para ajustar un Dashicon antes del elemento real. Luego agregué un número entero muy alto como último número a la acción; eso es lo que decide la posición del elemento en la barra de administración.
<?php
/** Plugin Name: Add Admin Bar Icon */
add_action( 'admin_bar_menu', function( \WP_Admin_Bar $bar )
{
$bar->add_menu( array(
'id' => 'wpse',
'title' => '<span class="ab-icon"></span>'.__( 'Example', 'some-textdomain' ),
'href' => get_edit_profile_url( get_current_user_id() ),
'meta' => array(
'target' => '_self',
'title' => __( 'Ahoi!', 'some-textdomain' ),
'html' => '<!-- Custom HTML that goes below the item -->',
),
) );
}, 210 ); // <-- THIS INTEGER DECIDES WHERE THE ITEM GETS ADDED (Low = left, High = right)
add_action( 'wp_enqueue_scripts', function()
{
wp_enqueue_style( /* register your stylesheet */ );
}
Finalmente, deberá agregar algunas reglas CSS en su propia hoja de estilo. La única parte móvil es wpse
en el #/id
. El resto es constante e igual para todos los elementos / nodos de la barra de administración. Es posible que también deba ajustar la top
posición para que se ajuste al Dashicon. Simplemente elija un Dashicon de su sitio y agregue el fXXX
código en el CSS a continuación.
#wpadminbar #wp-admin-bar-wpse .ab-icon:before {
content: '\f306';
top: 3px;
}