Thanh quản trị WordPress 3.1 mới có thể cắm được không và làm cách nào để mở rộng?


8

Làm cách nào tôi có thể mở rộng các chức năng của thanh quản trị WordPress 3.1 trong các plugin của mình?

Tôi đang tìm kiếm các móc và bộ lọc cụ thể để sử dụng trong việc thêm liên kết hoặc các tính năng khác vào thanh quản trị.

Một ví dụ điển hình về những gì đã được thực hiện là Yoast WordPress SEO (Plugin Wordpress) .

văn bản thay thế

Hiện tại không có tài liệu có sẵn về việc mở rộng thanh quản trị. Theo The Codex, có hai bộ lọc để tắt hoặc không hiển thị:

no_admin_bar() & show_admin_bar()


3
Bạn có thể không chỉ đạt đỉnh cao về cách plugin Yoast thực hiện nó, hoặc mã có hơi trừu tượng để có ý nghĩa không?
t31os

1
Đồng ý với t31os. Nó giúp nghiên cứu câu hỏi của bạn trước khi hỏi ... ;-)
Denis de Bernardy

5
Có thật không? Tôi nghĩ rằng đây là một câu hỏi hay. Khá nhiều câu hỏi ở đây có thể được trả lời bằng cách "thực hiện một số nghiên cứu". Tất nhiên tôi có thể tìm hiểu mã của Yoast và tìm hiểu cách anh ấy làm điều đó nhưng hiện tại không có tài liệu nào về việc mở rộng thanh quản trị tồn tại. Plugin SEO Yoast WordPress chỉ là một ví dụ vì tôi chắc chắn rằng có thể làm được nhiều việc hơn là chỉ thêm liên kết.
Chris_O

3.1 đang ở giai đoạn thử nghiệm, ít có khả năng tài liệu tồn tại cho chức năng có thể thay đổi. Mặc dù vậy, đừng hiểu sai về tôi, tôi sẽ tò mò muốn xem một số ví dụ về dự đoán 3.1 ... (tôi có xu hướng sử dụng chi nhánh ổn định vì tôi dành nhiều thời gian hơn để hỗ trợ cho phần lớn người dùng đang sử dụng) ... . (hoặc đây là trong 3.0.2?)
t31os

Câu trả lời:


16

Trình cắm của Yoast thực sự là một ví dụ rất hay nếu tất cả những gì bạn muốn làm là thêm menu. Về cơ bản, thanh quản trị chỉ là một tập hợp liên kết thay thế đến cùng các trang quản trị trình cắm mà bạn có trong thanh bên. Để thêm menu SEO cấp cao nhất, Yoast thực hiện như sau:

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

Điều này thêm một menu có tên "wpseo-menu" vào thanh quản trị và hướng người dùng đến bảng điều khiển của plugin khi họ nhấp vào liên kết. Liên kết con được thêm vào theo cách tương tự:

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

Bạn chỉ cần chỉ định "cha mẹ" của menu bạn đang thêm.

Sau đó, bạn có thể đi sâu như bạn cần, gọi $wp_admin_bar->add_menu()khi bạn cần và chỉ định thông tin phù hợp.


Để tham khảo, biến, $wp_admin_barlà một thể hiện của lớp WP_Admin_Bar()trong WordPress. Nó có một số phương thức và thuộc tính khác nhau, nhưng rõ ràng, phương pháp bạn quan tâm nhất ở đây là add_menu(). Phương pháp này chấp nhận các tham số nhất định:

  • tiêu đề - mặc định sai
  • href - mặc định sai,
  • cha mẹ - mặc định sai - truyền giá trị ID cho menu con của menu đó
  • id - mặc định là một giá trị tiêu đề vệ sinh.
  • meta - default false - mảng của bất kỳ tùy chọn nào sau đây:array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Nhưng phần còn lại của WP_Admin_Bar()lớp cắm. Nó chỉ phụ thuộc vào chính xác những gì bạn đang cố gắng làm và cách bạn muốn làm nó.

Xem thêm:


Câu trả lời rất hay. Tôi vừa xem xong PHPXref.
Chris_O

11

ví dụ nhỏ, tôi cũng đã viết cái này trong danh sách tin tặc wp trước khi xem ngày

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

7

Tải xuống bản dựng hàng đêm và kiểm tra hai tệp này;

  • wp-gồm / admin-bar.php
  • wp-gồm / class-wp-admin-bar.php

Lớp WP_Admin_Barvề cơ bản là 'API', trong khi tệp admin-bar.phpsử dụng nó để xây dựng thanh mặc định và loại bỏ một loạt các hook.

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

Đó là khá nhiều điều cơ bản - đây là tất cả những gì tôi đã thu thập được từ một người thích đi nhanh (thành thật mà nói, hơi khó chịu khi cái móc admin_bar_menukhông quay trở lại ví dụ WP_Admin_Bar- tôi ghét tất cả những quả cầu này!)


2
Sự phiền toái đó sẽ là một lý do tốt để mở một vé trên Trac để chúng tôi có thể vá nó cho WP 3.1.1 ...
EAMann

2
Để theo dõi: TheDeadMedic đã mở một vé và nó được đưa vào đúng thời gian cho 3.1, vì vậy bạn không cần phải đọc biến toàn cục, nó sẽ được chuyển qua tham chiếu làm tham số đầu tiên.
Jan Fabry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.