Apakah bar admin WordPress 3.1 yang baru dapat digunakan dan bagaimana saya dapat memperpanjangnya?

8

Bagaimana saya bisa memperluas fungsi bilah admin WordPress 3.1 di plugin saya?

Saya mencari kait dan filter khusus untuk digunakan dalam menambahkan tautan atau fitur lain ke bilah admin.

Contoh yang baik dari apa yang telah dilakukan adalah Yoast WordPress SEO (Wordpress Plugin) .

teks alternatif

Saat ini tidak ada dokumentasi yang tersedia untuk memperpanjang bar admin. Menurut The Codex ada dua filter untuk mematikannya atau tidak menunjukkannya:

no_admin_bar() & show_admin_bar()

Chris_O
sumber
3
Bisakah Anda tidak hanya mengambil puncak pada bagaimana plugin Yoast melakukannya, atau kode sedikit abstrak untuk masuk akal?
t31os
1
Setuju dengan t31os. Ini membantu untuk meneliti pertanyaan Anda sebelum bertanya ... ;-)
Denis de Bernardy
5
Betulkah? Saya pikir ini adalah pertanyaan yang bagus. Hampir semua pertanyaan di sini dapat dijawab dengan "melakukan riset". Tentu saja saya bisa menggali melalui kode Yoast dan mencari tahu bagaimana dia melakukannya tetapi seperti sekarang ini tidak ada dokumentasi untuk memperluas bar admin. Plugin Yoast WordPress SEO hanyalah sebuah contoh karena saya yakin lebih banyak yang dapat dilakukan daripada hanya menambahkan tautan.
Chris_O
3,1 dalam versi beta, kecil kemungkinan dokumentasi ada untuk fungsi yang dapat berubah. Jangan salah paham, saya akan penasaran untuk melihat beberapa contoh sendiri dalam mengantisipasi 3.1 ... (saya cenderung menggunakan cabang stabil karena saya menghabiskan lebih banyak waktu mendukung apa pun mayoritas pengguna berada di) ... . (atau ini dalam 3.0.2?)
t31os

Jawaban:

16

Plug-in Yoast sebenarnya adalah contoh yang sangat bagus jika semua yang ingin Anda lakukan adalah menambahkan menu. Pada dasarnya, bilah admin hanyalah serangkaian tautan alternatif ke laman admin pengaya yang sama dengan yang Anda miliki di bilah sisi. Untuk menambahkan menu SEO tingkat atas, Yoast melakukan hal berikut:

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

Ini menambahkan menu bernama "wpseo-menu" ke bar admin dan mengarahkan pengguna ke dasbor plug-in ketika mereka mengklik tautan. Tautan anak ditambahkan dengan cara yang serupa:

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

Anda cukup menentukan "induk" dari menu yang Anda tambahkan.

Kemudian Anda dapat pergi sedalam yang Anda butuhkan, menelepon $wp_admin_bar->add_menu()ketika Anda perlu dan menentukan informasi yang sesuai.


Sebagai referensi, variabel, $wp_admin_baradalah turunan dari kelas WP_Admin_Bar()di WordPress. Ini memiliki beberapa metode dan properti yang berbeda, tetapi yang paling Anda minati di sini adalah, tentu saja add_menu(),. Metode ini menerima parameter tertentu:

  • title - default false
  • href - default salah,
  • parent - default false - berikan nilai ID untuk submenu menu itu
  • id - default ke nilai judul yang disanitasi.
  • meta - default false - array dari salah satu opsi berikut:array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Tetapi sisa dari WP_Admin_Bar()kelas adalah pluggable. Itu hanya tergantung pada apa yang sebenarnya Anda coba lakukan dan bagaimana Anda ingin melakukannya.

Lihat juga:

EAMann
sumber
Jawaban yang sangat bagus Saya baru saja selesai melihat ke PHPXref.
Chris_O
11

contoh kecil, saya sudah menulis ini juga di daftar wp-hacker sebelum melihat hari

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

Unduh bangunan malam, dan periksa dua file ini;

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

Kelas WP_Admin_Barpada dasarnya adalah 'API', sementara file admin-bar.phpmenggunakannya untuk membangun bilah default dan melepaskan banyak kait.

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

Itulah dasar-dasarnya - ini saja yang saya kumpulkan dari penjelajahan cepat sendiri (sejujurnya, agak menjengkelkan kaitnya admin_bar_menutidak lulus contoh WP_Admin_Bar- Saya benci semua global ini!)

TheDeadMedic
sumber
2
Gangguan itu akan menjadi alasan yang baik untuk membuka tiket di Trac sehingga kita dapat menambalnya untuk WP 3.1.1 ...
EAMann
2
Untuk tindak lanjut: TheDeadMedic membuka tiket dan sudah termasuk dalam waktu untuk 3.1, jadi Anda tidak perlu membaca variabel global, itu akan dilewatkan dengan referensi sebagai parameter pertama.
Jan Fabry