如何将图标添加到新的管理栏项目?

时间:2014-12-22 作者:LPH

我有一个将项目添加到WordPress工具栏的功能。例如:

$args2 = array(
    \'id\'    => \'conversations_unread\',
    \'title\' => $visitor[\'conversations_unread\'] . \' &nbsp \',
    \'href\'  => XenForo_Application::get(\'options\')->boardUrl . \'/conversations\'
);
如何在此新项目的左侧获取图标?

我试图使用“meta”,但图标没有显示出来。

\'meta\' => array( \'class\' => \'ib-icon\' ),
我读到了一篇关于将图像添加到“标题”的引用,但我希望这个图标像评论气泡一样。

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

完整示例以快速(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>
现在我们有了基础,我们可以关心。。。

添加图标是一个令人伤心的消息:没有简单的方法可以做到这一点。至少不需要添加自己的样式表。正如您所读到的(代码中),发生了一些事情:我预先编写了包装所需的HTMLa 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 {
    font: normal 20px/1 dashicons;
    content: \'\\f306\';
    position: relative;
    float: left;
    speak: never;
    padding: 4px 0;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background-image: none !important;
    margin-right: 6px;
}

SO网友:majick

要扩展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,

结束

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu