Puede que en ocasiones queramos mostrar un mensaje cuando los usuarios activan el Plugin que has creado. De este modo podremos hacer cosas como:
- Ofrecer información acerca de los requerimientos del servidor.
- Agregar un enlace a la página de opciones del Plugin.
- Mostrar un enlace hacia algún tutorial.
- Preguntar al usuario si quiere dar una valoración de tu flamante Plugin.
- Pedir una donación a los usuarios de esas que sabemos que jamás realizarán.
- Sencillamente agradecerles que utilicen el Plugin.
Si creas una notificación en el panel de administración de WordPress te darás cuenta de que no puedes utilizar la acción admin_notices dentro de la función que asocies al hook de activación del Plugin. En este tutorial veremos un método alternativo acerca de cómo podemos mostrar la notificación.
Nos vamos a dejar de charlas y vamos a ver directamente un ejemplo de código que funciona y que podéis adaptar a vuestros Plugins.
register_activation_hook( __FILE__, 'mi_plugin_admin_notice_plugin_activation_hook' );
function mi_plugin_admin_notice_plugin_activation_hook() {
set_transient( 'mi-plugin-admin-notice-plugin', true, 5 );
}
add_action( 'admin_notices', 'mi_plugin_admin_notice_plugin_notice' );
function cs_admin_notice_plugin_notice(){
if( get_transient( 'cs-admin-notice-plugin' ) ){
?>
<div class="updated notice is-dismissible">
<p>Gracias por entrar en esta web. <strong>¡Que la disfrutes!</strong>.</p>
</div>
<?php
// Delete transient, only display this notice once
delete_transient( 'cs-admin-notice-plugin' );
}
}
Lo que hacemos es agregar una acción a nuestro Plugin que mostrará un mensaje cuando se muestre cualquier notificación tal y como podemos ver en la segunda función llamada mi-plugin_admin_notice_plugin_notice. El problema es que solamente queremos mostrar la notificación cuando se haya activado el Plugin.
Para solucionarlo, creamos un hook en la que agregamos un valor temporal mediante set_transient( ‘mi-plugin-admin-notice-plugin’, true, 5 ). Este valor será verdadero hasta que lo eliminemos dentro de al función mi-plugin_admin_notice_plugin_notice cuando el plugin se activa.