Saya telah mengatakan kembali ini agar lebih masuk akal.
Ok, saya punya plugin yang menggunakan layanan jarak jauh yang memeriksa pembaruan, sama seperti plugin WordPress default, dalam hal ini hanya memeriksa file XML.
Saya ingin menampilkan gelembung menu seperti ini ketika pembaruan tersedia.
Itu dapat menunjukkan hanya "1" atau teks seperti "lansiran", itu tidak masalah.
Karena plugin saya menggunakan halaman opsi (menggunakan add_options_page
) pengaturan plugin muncul di bawah submenu "Pengaturan" default.
Saya pikir saya perlu menambahkan CSS berikut untuk mendapatkan gelembung muncul,
<span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
dan mengikat ke global $submenu
. Masalahnya adalah saya tidak dapat menggunakan nilai array kode-keras untuk menu karena setiap situs akan memiliki nilai yang berbeda.
Jadi saya tidak bisa menggunakan $submenu[80][10] .= <span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
Bagaimana saya bisa menemukan nilai submenu plugin saya, apakah saya harus mengulang array dan mencocokkan nilai string?
Bahkan ketika saya membuat hard-coded nilai-nilai saya tidak bisa membuat gelembung muncul.
//adding plugin to menu
add_action('admin_menu', 'sec_plugin_checker');
function sec_plugin_checker() {
add_options_page(' Plugin Checker', 'Plugin Check', 'activate_plugins',
'sec_plugin_check', 'sec_checker');
// the conditional where I want the bubble to appear
if (!empty($matches)){
echo "Match found !<br />";
global $submenu;
foreach( $submenu as $item ) {
$item[41][20] = sprintf( __( 'Updates %s', 'sec_plugin_checker' ),
"<span class='update-plugins count-1' title='title'>
<span class='update-count'>1</span></span>");
}
}
dan inilah yang var_dump($submenu);
terlihat seperti,
["options-general.php"]=>
array(9){
...
[41]=>
array(4) {
[0]=>
string(20) "Plugin Check"
[1]=>
string(16) "activate_plugins"
[2]=>
string(21) "sec_plugin_check"
[3]=>
string(23) " Plugin Checker"
...
}
Jawaban:
Saya akan melakukan ini ketika Anda menelepon
add_options_page()
, bukan nanti. Itu selalu lebih baik untuk melakukan ini dengan API yang didukung daripada bermain dengan struktur internal.Plugin updater secara berkala memeriksa status plugin dan kemudian menyimpan hasilnya dalam transient . Ini berarti bahwa itu hanya membaca status cache ini ketika menu dibuat, itu tidak melakukan pemeriksaan penuh pada setiap halaman memuat. Anda dapat melakukan hal serupa:
Ketika Anda melakukan pemeriksaan peringatan yang sebenarnya, Anda menyimpan hasilnya dalam transient sehingga dapat dibaca nanti:
Perhatikan bahwa saya tidak melakukan sesuatu yang istimewa ketika tidak ada peringatan. Gelembung tidak ditampilkan karena mendapat kelas
count-0
, yang adadisplay: none
di css .sumber