J'ai reformulé cela pour donner plus de sens.
Ok, j'ai un plugin qui utilise un service distant qui vérifie les mises à jour, un peu comme les plugins WordPress par défaut, dans ce cas, il vérifie simplement un fichier XML.
Je souhaite afficher une bulle de menu comme celle-ci lorsqu'une mise à jour est disponible.
Il peut afficher juste un "1" ou un texte comme "alerte", peu importe.
Étant donné que mon plugin utilise une page d'options (en utilisant add_options_page
), les paramètres du plugin s'affichent dans le sous-menu "Paramètres" par défaut.
Je pense que je dois ajouter le CSS suivant pour faire apparaître la bulle,
<span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
et lier dans le monde $submenu
. Le problème est que je ne peux pas utiliser une valeur de tableau codée en dur pour le menu car chaque site aura des valeurs différentes.
Je ne peux donc pas utiliser $submenu[80][10] .= <span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
Comment puis-je trouver la valeur du sous-menu de mes plugins, dois-je parcourir le tableau et faire correspondre les valeurs de chaîne?
Même lorsque j'ai codé en dur les valeurs, je n'ai pas pu faire apparaître la bulle.
//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>");
}
}
et voici à quoi var_dump($submenu);
ça ressemble,
["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"
...
}
Réponses:
Je le ferais lorsque vous appelez
add_options_page()
, pas plus tard. Il est toujours préférable de le faire avec l'API prise en charge au lieu de jouer avec les structures internes.Le programme de mise à jour du plugin vérifie périodiquement l'état du plugin, puis enregistre le résultat dans un transitoire . Cela signifie qu'il ne lit cet état mis en cache que lorsque le menu est créé, il ne fait pas la vérification complète à chaque chargement de page. Vous pouvez faire quelque chose de similaire:
Lorsque vous effectuez la vérification d'avertissement réelle, vous enregistrez les résultats dans le transitoire afin qu'il puisse être lu plus tard:
Notez que je ne fais rien de spécial en l'absence d'avertissement. La bulle ne s'affiche pas car elle obtient la classe
count-0
, qui adisplay: none
dans le CSS .la source