ฉันจะเพิ่มไอคอนลงในรายการแถบผู้ดูแลระบบใหม่ได้อย่างไร


10

ฉันมีฟังก์ชั่นที่เพิ่มรายการลงในแถบเครื่องมือ WordPress ตัวอย่างเช่น:

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

ฉันจะรับไอคอนทางด้านซ้ายของรายการใหม่นี้ได้อย่างไร

ฉันพยายามใช้ 'meta' แต่ไอคอนไม่แสดง

'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

เพื่อขยายคำตอบของ kaiser คุณสามารถแทนที่ไอคอนด้วย 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,
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.