新的WordPress 3.1管理栏是可插拔的吗?我如何扩展它?

时间:2010-12-07 作者:Chris_O

如何在插件中扩展WordPress 3.1管理栏的功能

我正在寻找特定的挂钩和过滤器,用于向管理栏添加链接或其他功能。

一个很好的例子就是YoastWordPress SEO (Wordpress Plugin).

alt text

目前没有关于扩展管理栏的文档。根据The Codex 有两个过滤器可将其关闭或不显示:

no_admin_bar() &;show_admin_bar()

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

如果您只想添加菜单,那么Yoast的插件实际上就是一个很好的例子。基本上,管理栏只是指向侧栏中相同插件管理页面的一组备用链接。要添加顶级SEO菜单,Yoast执行以下操作:

$wp_admin_bar->add_menu( array( \'id\' => \'wpseo-menu\', \'title\' => __( \'SEO\' ), \'href\' => get_admin_url(\'admin.php?page=wpseo_dashboard\'), ) );
这将在管理栏中添加一个名为“wpseo菜单”的菜单,并在用户单击链接时将其引导到插件的仪表板。子链接以类似的方式添加:

$wp_admin_bar->add_menu( array( \'parent\' => \'wpseo-menu\', \'id\' => \'wpseo-kwresearch\', \'title\' => __( \'Keyword Research\' ), \'#\', ) );
您只需指定要添加的菜单的“父菜单”。

然后你可以去你需要的地方,打电话$wp_admin_bar->add_menu() 当您需要并指定适当的信息时。

参考变量,$wp_admin_bar 是类的实例WP_Admin_Bar() 在WordPress中。它有几种不同的方法和属性,但您最感兴趣的是,add_menu(). 此方法接受某些参数:

  • title - 默认值为falsehref - 默认为false,
  • parent - default false-传递该菜单子菜单的ID值id - 默认为经过清理的标题值
  • meta - default false-以下任意选项的数组:array( \'html\' => \'\', \'class\' => \'\', \'onclick\' => \'\', target => \'\' );
但是WP_Admin_Bar() 类是可插拔的。这取决于你到底想做什么以及你想怎么做。

另请参见:

SO网友:bueltge

举个小例子,在观看日之前,我已经在wp黑客名单上写了这篇文章

function wp_codex_search_form() {
    global $wp_admin_bar, $wpdb;

    if ( !is_super_admin() || !is_admin_bar_showing() )
        return;

    $codex_search = \'<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php" style="margin:2px 0 0;">
        <input type="text" onblur="this.value=(this.value==\\\'\\\') ? \\\'Search the Codex\\\' : this.value;" onfocus="this.value=(this.value==\\\'Search the Codex\\\') ? \\\'\\\' : this.value;" maxlength="100" value="Search the Codex" name="search" class="adminbar-input">
        <button type="submit" class="adminbar-button">
            <span>Go</span>
        </button>
    </form>\';

    /* Add the main siteadmin menu item */
    $wp_admin_bar->add_menu( array( \'id\' => \'codex_search\', \'title\' => \'Search Codex\', \'href\' => FALSE ) );
    $wp_admin_bar->add_menu( array( \'parent\' => \'codex_search\', \'title\' => $codex_search, \'href\' => FALSE ) );
}
add_action( \'admin_bar_menu\', \'wp_codex_search_form\', 1000 );

SO网友:TheDeadMedic

下载夜间构建,并查看这两个文件;

wp包括/管理栏。php包含/类wp管理栏。php课程WP_Admin_Bar 本质上是“API”,而文件admin-bar.php 使用它来构建默认条并触发大量挂钩。

function my_admin_bar()
{
    global $wp_admin_bar;
    $wp_admin_bar->add_menu(array(
        \'parent\' => \'my-account\', // optional
        \'id\'     => \'my-unique-id\',
        \'title\'  => \'\',
        \'href\'   => \'\'
    ));
}
add_action(\'admin_bar_menu\', \'my_admin_bar\');
这几乎是最基本的-这是我自己从一个快速的gander中收集到的全部(老实说,这有点恼人admin_bar_menu 不会传回的实例WP_Admin_Bar - 我讨厌所有这些全球人!)

结束

相关推荐