Pada bagian Admin WordPress, bagaimana saya menautkan ke halaman submenu yang dibuat untuk sebuah plugin?

10

Jadi saya mencoba membuat plugin WordPress dan saya telah membuat beberapa halaman menu menggunakan fungsi yang disediakan ini:

add_submenu_page('my_plugin_menu', 'Edit record page', 'Edit record page', 'manage_options', 'edit_record_page', array(&$this, 'display_edit_record_page');

dan ketika saya pergi ke halaman saya perhatikan pada bilah alamat di browser itu berbunyi seperti ini:

http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page

Apa yang ingin saya lakukan adalah dapat menautkan halaman ini tetapi saya merasa saya harus membuat hardcode tautan tersebut karena tidak ada cara yang lebih baik untuk melakukannya dan saya sedang mengerjakan situs dev. Jadi saya bertanya-tanya bagaimana saya bisa secara dinamis menghasilkan tautan yang saya lihat di browser saya sehingga ketika saya menyalin kode plugin ini ke server produksi itu akan berfungsi. Yaitu, apakah ada fungsi WordPress yang akan menghasilkan bagian tautan dari halaman submenu buat.

page=edit_record_page

Juga, jika saya ingin menambahkan string kueri ke tautan apakah itu semudah menambahkannya secara manual seperti:

http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page&rec_id=1

atau adakah fungsi WordPress yang tepat untuk melakukan itu juga?

racl101
sumber

Jawaban:

16

admin_url()memberi Anda URL halaman administrasi yang benar (dan network_admin_url()untuk mendapatkan URL halaman administrasi jaringan)

Secara opsional, Anda dapat menggunakan add_query_arg()untuk menambahkan argumen ke URL, menggunakan array asosiatif:

$page       = 'edit_record_page';
$rec_id     = 1;
$record_url = add_query_arg(compact('page', 'rec_id'), admin_url('admin.php'));
onetrickpony
sumber
3

<a href="admin.php?page=edit_record_page">Link Text</a>

dan

<a href="admin.php?page=edit_record_page&rec_id=1">Link Text</a>

matt
sumber
Ini berfungsi, namun dapatkah Anda menunjukkan contoh menggunakan admin_url (); sebaris seperti ini?
Ben Racicot