Halaman pengaturan 'Global' untuk plugin multisite

24

Saya sedang mengerjakan sebuah plugin yang akan diinstal dalam instance multisite.

Bagaimana cara membuat halaman pengaturan tunggal yang hanya terlihat di level "Admin jaringan" - sebagian besar panduan yang saya lihat terkait dengan plugin tingkat blog standar. Tautan apa pun ke informasi akan berguna, jika tidak, saya hanya akan melalui tag seluruh situs untuk melihat bagaimana hal itu dilakukan di sana.

[Memperbarui]

Sepertinya sitewide_tags menggunakan add_site_option, get_site_optiondan update_site_option, dan fungsi-fungsi ini menggunakan wp_sitemeta. Namun, dari apa yang saya lihat, tidak ada dukungan untuk register_setting, add_setting, dll, jadi Anda harus mendapatkan dan mengatur opsi Anda secara manual.

anu
sumber

Jawaban:

6

Sebagai acuan

Untuk membuat pengaturan jaringan atau global, Anda perlu melakukan hal berikut

  • Tambahkan halaman pengaturan

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
  • Tambahkan opsi global

    add_site_option($key,$value)
  • Perbarui opsi global

    update_site_option($key,$value)
  • Dapatkan opsi situs

    get_site_option($key)

Pengaturan global disimpan ke sitemetatabel (pengaturan blog individual disimpan ke <blog_id>_optionstabel

  • Saya pikir Pengaturan API berfungsi di tingkat blog - jadi gunakan tabel opsi, bukan sitemeta. Jadi, Anda tidak dapat menggunakan grup opsi dan sejenisnya di tingkat jaringan ( beri komentar jika saya salah )
anu
sumber
0

Yah, saya menghadapi kebutuhan yang sama baru-baru ini, tetapi juga tidak tahu jawabannya. Meskipun bukan jawaban atas pertanyaan Anda secara eksplisit, alternatifnya adalah dengan hanya membuat halaman opsi di bawah opsi blog 'utama' dan memeriksa apakah multisite diaktifkan.

Bukan cara yang ideal, tetapi jika (seperti saya) Anda baru saja membuat plugin internal untuk penggunaan Anda sendiri, itu bisa diterapkan. Ini juga memiliki keuntungan bahwa semua fungsi biasa untuk halaman admin tersedia - yang belum dalam konteks halaman admin jaringan global.

DavidJ
sumber
0

Saat Anda menggunakan add_submenu_page(), add_menu_page()dll , dan mengharapkan halaman pengaturan muncul di dasbor multisite Anda, pertimbangkan untuk menggunakan network_admin_menuhookadmin_menu

Contoh:

add_action( 'network_admin_menu', 'network_settings_page' );
function network_settings_page(){
    add_submenu_page(

        ...
    )
}

Untuk menyimpan pengaturan, Anda dapat menggunakan network_admin_edit_{ACTION}kait tindakan.

Referensi: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

Misha Rudrastyh
sumber