He reformulado esto para que tenga más sentido.
Ok, tengo un complemento que usa un servicio remoto que busca actualizaciones, al igual que los complementos predeterminados de WordPress, en este caso solo verifica un archivo XML.
Quiero mostrar una burbuja de menú como esta cuando hay una actualización disponible.
Puede mostrar solo un "1" o texto como "alerta", no importa.
Como mi complemento usa una página de opciones (usando add_options_page
), la configuración del complemento se muestra en el submenú "Configuración" predeterminado.
Creo que necesito agregar el siguiente CSS para que aparezca la burbuja,
<span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
y vincularse a lo global $submenu
. El problema es que no puedo usar un valor de matriz codificado para el menú ya que cada sitio tendrá valores diferentes.
Entonces no puedo usar $submenu[80][10] .= <span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>
¿Cómo puedo encontrar el valor del submenú de mis complementos? ¿Tengo que recorrer la matriz y hacer coincidir los valores de la cadena?
Además, incluso cuando codifiqué los valores, no pude hacer que apareciera la burbuja.
//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>");
}
}
y así es var_dump($submenu);
como se ve,
["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"
...
}
Respuestas:
Haría esto cuando llames
add_options_page()
, no más tarde. Siempre es mejor hacer esto con la API compatible en lugar de jugar con las estructuras internas.El actualizador de complementos verifica periódicamente el estado del complemento y luego guarda el resultado en un transitorio . Esto significa que solo lee este estado en caché cuando se crea el menú, no realiza la verificación completa en cada carga de página. Puedes hacer algo similar:
Cuando realiza la comprobación de advertencia real, guarda los resultados en el transitorio para que pueda leerse más tarde:
Tenga en cuenta que no hago nada especial cuando no hay advertencias. La burbuja no se muestra porque obtiene la clase
count-0
, que tienedisplay: none
en el CSS .fuente