A nova barra de administração do WordPress 3.1 é plugável e como posso estendê-la?

8

Como posso estender as funções da barra de administração do WordPress 3.1 em meus plugins?

Estou procurando ganchos e filtros específicos para adicionar links ou outros recursos à barra de administração.

Um bom exemplo do que já foi feito é o WordPress SEO (Wordpress Plugin) do Yoast .

Atualmentenãohádocumentaçãodisponívelsobrecomoestenderabarradeadministração.Deacordocom O Codex , existem dois filtros para desativá-lo ou não exibi-lo:

no_admin_bar() & show_admin_bar()

    
por Chris_O 07.12.2010 / 17:36

3 respostas

16

O plug-in do Yoast é realmente um bom exemplo, se tudo o que você quer fazer é adicionar menus. Basicamente, a barra de administração é apenas um conjunto alternativo de links para as mesmas páginas de administração de plug-in que você tem na barra lateral. Para adicionar o menu SEO de nível superior, o Yoast faz o seguinte:

$wp_admin_bar->add_menu( array( 'id' => 'wpseo-menu', 'title' => __( 'SEO' ), 'href' => get_admin_url('admin.php?page=wpseo_dashboard'), ) );

Isso adiciona um menu chamado "wpseo-menu" à barra de administração e direciona os usuários para o painel do plug-in quando eles clicam no link. Links filho são adicionados de forma semelhante:

$wp_admin_bar->add_menu( array( 'parent' => 'wpseo-menu', 'id' => 'wpseo-kwresearch', 'title' => __( 'Keyword Research' ), '#', ) );

Você apenas especifica o "pai" do menu que está adicionando.

Então, você pode ir tão fundo quanto precisar, chamando $wp_admin_bar->add_menu() quando precisar e especificando as informações apropriadas.

Para referência, a variável $wp_admin_bar é uma instância da classe WP_Admin_Bar() no WordPress. Ele tem vários métodos e propriedades diferentes, mas o que você está mais interessado aqui é, obviamente, add_menu() . Este método aceita determinados parâmetros:

  • title - padrão falso
  • href - padrão falso,
  • parent - default false - passa o valor do ID para um submenu desse menu
  • id - padrão para um valor de título higienizado.
  • meta - padrão falso - matriz de qualquer uma das seguintes opções: array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Mas o resto da classe WP_Admin_Bar() é conectável. Depende apenas do que exatamente você está tentando fazer e como você quer fazer isso.

Veja também:

por EAMann 07.12.2010 / 19:44
11

pequeno exemplo, eu escrevi isso também na lista wp-hackers antes dos dias de exibição

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 );
    
por bueltge 07.12.2010 / 20:12
7

Faça o download da compilação noturna e confira estes dois arquivos;

  • wp-includes / admin-bar.php
  • wp-includes / class-wp-admin-bar.php

A classe WP_Admin_Bar é essencialmente a 'API', enquanto o arquivo admin-bar.php a usa para construir a barra padrão e disparar uma carga de ganchos.

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');

Isso é basicamente o básico - isso é tudo que eu juntei de uma olhada rápida (para ser honesto, é um pouco chato o gancho admin_bar_menu não passar de volta a instância de WP_Admin_Bar - eu odeio tudo esses globals!)

    
por TheDeadMedic 07.12.2010 / 19:42