मैं नए व्यवस्थापक बार आइटम में एक आइकन कैसे जोड़ूं?


10

मेरे पास एक फ़ंक्शन है जो वर्डप्रेस टूलबार में आइटम जोड़ता है। उदाहरण के लिए:

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

मुझे इस नए आइटम के बाईं ओर एक आइकन कैसे मिलेगा?

मैंने 'मेटा' का उपयोग करने की कोशिश की है, लेकिन आइकन दिखाई नहीं देता है।

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

मैंने छवि को 'शीर्षक' में जोड़ने के लिए एक संदर्भ पढ़ा, लेकिन मैं इस आइकन को टिप्पणी बबल की तरह बनाना चाहूंगा।

जवाबों:


13

पूर्ण उदाहरण

उदाहरण के लिए एक त्वरित (म्यू-) प्लगइन:

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

अब जब हमें एक आधार मिल गया है, तो हम ध्यान रख सकते हैं ...

प्रतीक जोड़ना

दुखद खबर: इसे करने का कोई आसान तरीका नहीं है। कम से कम अपनी खुद की स्टाइलशीट जोड़े बिना नहीं। जैसा कि आप पढ़ सकते हैं (कोड में), कुछ चीजें हो रही हैं: मैंने वास्तविक आइटम से पहले डैशकॉन को लपेटने के लिए आवश्यक एचटीएमएल को तैयार किया । फिर मैंने अंतिम नंबर पर कार्रवाई के रूप में एक बहुत ही उच्च पूर्णांक जोड़ा - यही वह चीज है जो व्यवस्थापक बार में आइटम की स्थिति तय करती है।

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

अंत में आपको अपनी खुद की स्टाइलशीट में कुछ सीएसएस नियमों को जोड़ना होगा। केवल चलती हिस्सा wpseमें है #/id। बाकी सभी एडमिन बार आइटम / नोड्स के लिए स्थिर और बराबर है। आपको topडैशिकन को फिट करने के लिए स्थिति को समायोजित करने की भी आवश्यकता हो सकती है । बस अपनी साइट से डैशकॉन चुनें और 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.