web-dev-qa-db-ja.com

$ wp_admin_bar-> add_menu()またadd_node()で追加した管理バー項目の位置を指定するにはどうすればいいですか?

自分のサイトへのリンクを管理バーに追加し、そのリンクを管理バーの一番左の項目にします。私はプラグイン関数でこれとのリンクを追加することができます:

$wp_admin_bar->add_menu( array(
        'id' => 'my-link',
        'title' => __('MySite'),
        'href' => site_url() 
    ) );

しかし、私はそれを管理バーの一番左のリンク、つまり左上隅にあるリンクにしたいのです。これを行う方法はありますか?

3
Jonathan

私が正しければ、これらはデフォルトの位置です:

  • wp_admin_bar_wp_menu - 10
  • wp_admin_bar_my_sites_menu - 20
  • wp_admin_bar_site_menu - 30
  • wp_admin_bar_updates_menu - 40
  • wp_admin_bar_comments_menu - 60
  • wp_admin_bar_new_content_menu - 70
  • wp_admin_bar_edit_menu - 80

私が使用しているものからの小さなコードの抜粋:
add_action('admin_bar_menu', 'your_function_name', 10);

10はそれを管理バーの一番左側に持ってくるべきです。

現時点ではWPバージョン3.8であり、それはまだ魅力のように機能します。

追加例:

function add_item($admin_bar)  {
$args = array(
    'id'        => 'your-link', // Must be a unique name
    'title'     => 'Yoursite', // Label for this item
    'href'      =>__ ('your_site_url'),
    'meta'  => array(
        'target'=> '_blank', // Opens the link with a new tab
        'title' => __('Yoursite'), // Text will be shown on hovering
    ),
);
$admin_bar->add_menu( $args);
}
add_action('admin_bar_menu', 'add_item', 10); // 10 = Position on the admin bar
6
Charles

私はチャールズの解決策を試みたが成功しなかった。管理バーのどちら側にコンテンツを追加するかを指定できることがわかりました。

を使う

add_action( 'admin_bar_menu,'yourfunctionname');

デフォルトのコンテンツの前に、新しいコンテンツを管理バーの左側に追加します。

を使う

add_action( 'wp_before_admin_bar_render', 'yourfunctionname' );

デフォルトのコンテンツの後に新しいコンテンツを管理バーの右側に追加します。

1
davidcondrey

管理バーを完全に再編成したい場合はWP_Admin_Bar()を使用する必要があります。

例:

function reorder_admin_bar() {
    global $wp_admin_bar;

    // The desired order of identifiers (items)
    $IDs_sequence = array(
        'wp-logo',
        'site-name',
        'new-content',
        'edit'
    );

    // Get an array of all the toolbar items on the current
    // page
    $nodes = $wp_admin_bar->get_nodes();

    // Perform recognized identifiers
    foreach ( $IDs_sequence as $id ) {
        if ( ! isset($nodes[$id]) ) continue;

        // This will cause the identifier to act as the last
        // menu item
        $wp_admin_bar->remove_node($id);
        $wp_admin_bar->add_node($nodes[$id]);

        // Remove the identifier from the list of nodes
        unset($nodes[$id]);
    }

    // Unknown identifiers will be moved to appear after known
    // identifiers
    foreach ( $nodes as $id => &$obj ) {
        // There is no need to organize unknown children
        // identifiers (sub items)
        if ( ! empty($obj->parent) ) continue;

        // This will cause the identifier to act as the last
        // menu item
        $wp_admin_bar->remove_node($id);
        $wp_admin_bar->add_node($obj);
    }
}
add_action( 'wp_before_admin_bar_render', 'reorder_admin_bar');

https://codex.wordpress.org/Class_Reference/WP_Admin_Bar

0
Diblo Dk