Skip to content

Instantly share code, notes, and snippets.

@PCianes
Last active January 11, 2019 08:22
Show Gist options
  • Select an option

  • Save PCianes/bd3148ee2c01fe4a542f3e46b56c139b to your computer and use it in GitHub Desktop.

Select an option

Save PCianes/bd3148ee2c01fe4a542f3e46b56c139b to your computer and use it in GitHub Desktop.
Admin notices (avisos panel administración)
<?php
/**
* Some example snippets for the control of notices in WordPress admin panel
*
* @package PCianes\AdminUtilities
* @since 1.0.0
* @author PCianes
* @license GNU General Public License 2.0+
*/
namespace PCianes\AdminUtilities;
/**
* Add condicional notice in admin (example)
*
* @since 1.0.0
*
* @return void
*/
function add_admin_notice(){
$admin_page_with_notice = 'index.php';
$user_role_for_notice = 'administrator';
global $pagenow;
if ( !($pagenow == $admin_page_with_notice) ) {
return;
}
$current_user = wp_get_current_user();
if ( !in_array( $user_role_for_notice , (array) $current_user->roles ) ) {
return;
}
printf('<div class="notice notice-info is-dismissible">
<p>Click on <a href="edit.php">Posts</a> to start writing.</p>
<h1>HELLO WORLD!! This page is %s and you are %s</h1>
</div>',
$admin_page_with_notice, $user_role_for_notice);
}
add_action('admin_notices', __NAMESPACE__ . '\add_admin_notice', 11);
/**
* Delete all admin notices except for one user_ID
*
* @since 1.0.0
*
* @return void
*/
function delete_all_admin_notices() {
$admin_user_ID_with_notices = '1';
$user_role_for_notices = 'administrator';
$current_user = wp_get_current_user();
$current_user_data = $current_user->data;
if ( in_array( $user_role_for_notices, (array) $current_user->roles )
&& $current_user_data->ID == $admin_user_ID_with_notices ) {
return;
}
remove_all_filters( 'admin_notices');
}
add_action('admin_init', __NAMESPACE__ . '\delete_all_admin_notices', 999);
@PCianes

PCianes commented Jun 29, 2017

Copy link
Copy Markdown
Author

1- Función para crear avisos en panel administración.
2- Función para quitar todos los avisos excepto a un administrador concreto.

@flabernardez

Copy link
Copy Markdown

Eyyy genial! pero podrías poner la extensión en .php para que coloree la sintaxis? Gracias :D

@PCianes

PCianes commented Jun 29, 2017

Copy link
Copy Markdown
Author

Ups! Todavía no sé cómo funciona esto ;-)

@samuelaguilera

Copy link
Copy Markdown

Tienes que añadir <?php al inicio del snippet para que haga el coloreado de sintaxis. Si quieres un consejo, te recomendaría añadir comentarios en el código explicado lo que haces, ayudará a otros a entenderlo y a ti mismo cuando haga tanto tiempo que no uses el snippet que ni te acuerdes de haberlo usando jamás...

@planetahuevo

planetahuevo commented Jun 29, 2017 •

Copy link
Copy Markdown

Gracias! Te paso el código que yo he creado con tu ayuda, se debe cambiar el username en la función por el deseado.

function expwp_hide_notifications_to_all_but_superadmin_user() {
   if (get_current_user_id() !==  '25' ) {
   // to remove only core updates
   remove_action( 'admin_notices', 'update_nag', 3 );  
   // to remove all notifications
   remove_all_filters( 'admin_notices');
   }
}
add_action( 'admin_head', 'expwp_hide_notifications_to_all_but_superadmin_user', 1 );

@davilera

Copy link
Copy Markdown

No lo he mirado con detalle, pero ¿no sería mejor usar la función remove_all_filters (ver en el Codex) de la acción admin_notices? De esta forma, nos ahorraríamos tener que meter mano a una variable global como $wp_filter...

Y lo mismo con la variable global $user_login: preferiría usar una combinación de get_userdata (Codex) y get_current_user_id (Codex).

@PCianes

PCianes commented Jun 29, 2017 •

Copy link
Copy Markdown
Author

Muchas gracias por los comentarios! Acabo de reescribir el código documentado todo como recomendabais pero intentando que el orden y estructura del código, así como que los nombres de las variables y funciones sirvan para entenderlo sin necesidad de más comentarios añadidos.

@PCianes

PCianes commented Jun 29, 2017 •

Copy link
Copy Markdown
Author

Gracias David por tu aporte, ciertamente no he usado get_current_user_id para tener mas datos para variaciones con wp_get_current_user , pero ayer al hacer la prueba rápida si que había metido mano a una variable global como la que controla los eventos mediante $wp_filter que siempre es peligroso. ;-)

@PCianes

PCianes commented Jun 29, 2017

Copy link
Copy Markdown
Author

Genial David! Ya lo he cambiado y me convence mucho más así. ¡gracias por tu ayuda!

@planetahuevo

Copy link
Copy Markdown

He editado el código de arriba con las modificaciones. :) Gracias!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment