¿Te gustaría mostrar mensajes personalizadas para los usuarios de tu sitio?. En este artículo veremos cómo mostrar notificaciones por usuario cuando se conectan a la administración de WordPress.
Resultado Final
Al final lo que queremos obtener es algo similar a lo que se muestra en la siguiente imagen. Cuando un usuario que tiene algún mensaje asignado por el administrador, se le mostrará como notificación en el backend de WordPress.
Código para crear un campo adicional en el perfil de usuario
Primero necesitamos un campo por usuario para que el administrador ingrese el mensaje, nos basaremos en el artículo de agregar campos adicionales al perfil de usuario.
<?php //No copiar este línea
// Add fields to the section
add_action( 'show_user_profile', 'dcms_field_message_user' );
add_action( 'edit_user_profile', 'dcms_field_message_user' );
function dcms_field_message_user( $user ) {
// Validate administrator user
if ( ! current_user_can( 'manage_options' ) ) return;
?>
<h3><?php _e('User Alert'); ?></h3>
<table class="form-table">
<tr>
<th>
<label for="message"><?php _e('Message'); ?></label>
</th>
<td>
<input type="text" name="message" id="message" class="regular-text"
value="<?php echo esc_attr( get_the_author_meta( 'message_user', $user->ID ) ); ?>" />
<p class="description"><?php _e('Add a custom message for the backend user'); ?></p>
</td>
</tr>
</table>
<?php }
// Save user fields
add_action( 'personal_options_update', 'dcms_save_field_message_user' );
add_action( 'edit_user_profile_update', 'dcms_save_field_message_user' );
function dcms_save_field_message_user( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if( isset($_POST['message']) ) {
$message = sanitize_text_field($_POST['message']);
update_user_meta( $user_id, 'message_user', $message );
}
}
Tras ingresar este código veremos que al editar un usuario aparecerá una nueva sección, tal como se muestra en la imagen:
Código para mostrar la notificación
Para mostrar el mensaje, ingresado anteriormente por un administrador, cuando un usuario particular esta en el área de administración, nos basaremos en el artículo mostrar mensajes en la administración de WordPress.
<?php //No copiar este línea
add_action( 'admin_notices', 'dcms_show_message_user' );
function dcms_show_message_user() {
$message = get_the_author_meta( 'message_user', get_current_user_id() );
if ( ! $message ) return;
?>
<div id="message" class="notice notice-warning">
<p>👉🏽 <strong>Mensaje Administrador: </strong> <?= $message ?></p>
</div>
<?php
}
En el código anterior:
- Usamos el Hook admin_notices que hace referencia a la función dcms_show_message_user
- Dentro de esta función obtenemos el ID del usuario actual y comprobamos si tiene un mensaje, recuperando de la metadata de usuario
- Si tiene mensaje entonces mostramos el código HTML de la notificación
Conclusión
Como has podido comprobar, puedes mostrar un mensaje personalizado a un usuario en particular y este lo verá cuando ingrese a la sección de administración del sitio. En este artículo hemos visto cómo realizarlo directamente a través de código.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
La entrada Mostrar notificaciones por usuario en la administración de WordPress es un artículo reciente del sitio DecodeCMS.
0 Commentaires