Як додати піктограму до нового елемента панелі адміністратора?


10

У мене є функція, яка додає елементи на панель інструментів WordPress. Наприклад:

$args2 = array(
    'id'    => 'conversations_unread',
    'title' => $visitor['conversations_unread'] . ' &nbsp ',
    'href'  => XenForo_Application::get('options')->boardUrl . '/conversations'
);

Як отримати піктограму зліва від цього нового елемента?

Я намагався використовувати "мета", але значок не відображається.

'meta' => array( 'class' => 'ib-icon' ),

Я прочитав посилання на додавання зображення до "заголовка", але хотів би, щоб цей значок був як міхур коментаря.

Відповіді:


13

Повний приклад

Швидкий (mu-) плагін, наприклад:

<?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,
        ),
    ) );
} );

Що робить наступний HTML в якості першого елемента (а отже, також робить наш адмін-бар непотрібним, але це не суть цього прикладу):

<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>

Тепер, коли ми отримали базу, ми можемо подбати про ...

Додавання значків

Сумна новина: Не існує простого способу це зробити. Принаймні не без додавання власної таблиці стилів. Як ви можете прочитати (у коді), відбуваються деякі речі: я заздалегідь створив HTML, необхідний для загортання Dashicon перед фактичним елементом. Потім я додав дуже високе ціле як останнє число до дії - саме це визначає позицію елемента на панелі адміністратора.

<?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 */ );
}

Нарешті, вам потрібно буде додати деякі правила CSS у свій власний таблицю стилів. Єдина рухома частина - це wpseв #/id. Решта є постійним і рівним для всіх елементів / вузлів панелі адміністратора. Вам також може знадобитися відрегулювати topположення, щоб відповідати Dashicon. Просто виберіть Dashicon на своєму сайті та додайте fXXXкод у CSS нижче.

#wpadminbar #wp-admin-bar-wpse .ab-icon:before {
    content: '\f306';
    top: 3px;
}

2

щоб розширити відповідь кайзера, ви також можете змінити значок із власною URL-адресою зображення та поставити стилі в рядок (або знову окремо, якщо хочете), наприклад. значок 22px x 22px ...

$iconurl = '/images/custom-icon.png';

$iconspan = '<span class="custom-icon" style="
    float:left; width:22px !important; height:22px !important;
    margin-left: 5px !important; margin-top: 5px !important;
    background-image:url(\''.$iconurl.'\');"></span>';

$title = __( 'Example', 'some-textdomain' ),

потім використовуйте для заголовкового значення:

'title' => $iconspan.$title,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.