Advertisement
  1. Code
  2. WordPress

Avisos de WordPress Admin Persistente: Parte 3

by
Read Time:12 minsLanguages:
This post is part of a series called Persisted WordPress Admin Notices.
Persisted WordPress Admin Notices: Part 2
Persisted WordPress Admin Notices: Part 4

Spanish (Español) translation by James (you can also view the original English article)

¡Bienvenido de nuevo a nuestra serie en persistentes avisos de admin de WordPress. Ahora estamos en una buena posición para poder extender la funcionalidad de aviso del admin y controlar cuando aparecen en la página.

Después de eso, pasemos a los avisos del admin persistente y vea cómo puede asegurarse de que están despedidos de tal manera que ellos no vuelven a aparecer cuando se vuelve a cargar páginas de admin.

Esto es particularmente importante como avisos de administración personalizada implementada en plugins y temas sólo son realmente útiles cuando permanentemente puede despedirlos. No basta con simplemente añadir la clase CSS is-dismissible.

Controlar Cuando Aparecen Avisos de Admin

Hasta ahora, todos los avisos de administración han exhibido tan pronto como se carga la página. Puede haber ocasiones cuando esto es inconveniente y desea que el aviso del admin que se mostrará después de un cierto evento se ha activado en su lugar.

¿Qué tal si queríamos un aviso de administración personalizada que se mostrará en la página de opciones del plugin que creamos anteriormente, pero sólo después de que se hizo clic en el botón Guardar Cambios?

Ya sabemos de parte dos restringir un aviso del admin de la página de opciones del plugin. Vamos a averiguar cómo nosotros podemos provocar que aparecen después de opciones del plugin se han salvado.

Empezar comentando la llamada de función add_action para plugin_admin_notice. Luego, añadir una cuarta llamada add_action en init como sigue:

Cuando se guardan opciones de plugin, settings-updated el valor true se añade a la variable de matriz super global $_GET. Podemos utilizar esto para determinar si necesitamos mostrar nuestro aviso del admin.

Añadir un nuevo método de conditional_plugin_admin_notice a Gwyer_Admin_Notices que envía el valor de $_GET a la pantalla.

Cuando la página de opciones del plugin se carga normalmente no vemos un valor conjunto de actualiza la configuración.

Normal Plugin Options Page LoadingNormal Plugin Options Page LoadingNormal Plugin Options Page Loading

Ahora introduzca algún texto en el campo de Introduzca algún texto y haga clic en Guardar Cambios. Esta vez, vemos settings-updated establecida en true, que podemos poner a buen uso.

The settings-updated value set to trueThe settings-updated value set to trueThe settings-updated value set to true

Reemplace conditional_plugin_admin_notice con:

Por ahora, este código debe estar buscando familiar. Un par de nuevas características se han añadido, aunque. En primer lugar, la expresión condicional se ha ampliado para detectar la presencia de settings-update. Ahora, el aviso del admin sólo mostrará si estamos en la página de opciones del plugin y si settings-update está establecida en true.

También, el nombre de pantalla actual del usuario se genera al hacer el admin aviso un poco más personal.

A more personal admin notice messageA more personal admin notice messageA more personal admin notice message

La función wp_get_current_user() devuelve información acerca del usuario actualmente logueado. Este objeto se almacena en $current_user y contiene datos como el correo electrónico del usuario, ID, nombre, Apellido y nombre para mostrar, que es la propiedad particular que nos interesa.

Finalmente, para el pulimento extra un poco, nos hemos impedido el aviso del admin por defecto mostrando así nuestro personalizado es el único visible para el usuario. Para lograr esto, hemos añadido una sola línea de código para conditional_plugin_admin_notice() a la salida de CSS para ocultar el aviso del admin no deseados.

A continuación se muestra el resultado final cuando se guardan opciones de plugin.

The finished admin notice to show the plugin has been updatedThe finished admin notice to show the plugin has been updatedThe finished admin notice to show the plugin has been updated

Aunque esto funciona bien para fines de demostración, una mejor (y más limpio) sería añadir estilos a una hoja de estilo separada en lugar de otro y poner en las opciones del plugin página solamente.

Nuestro aviso de administración personalizado podría extenderse aún más en un número de maneras. Una posibilidad podría ser mantener un registro que almacena la fecha y hora actuales junto con la información de usuario cada vez que se guardan las opciones del plugin.

O ¿por qué conseguir el aviso del admin para ver cuantas veces el plugin opciones salvos ese día, semana, mes, etcetera.? Yo estoy seguro que puedes pensar en más ejemplos demasiado!

Despedir a Persistió Admin Avisos con Eficacia

Es hora de ensuciarse las manos ahora y escarbar más profundo código de volvemos nuestra atención a despedir admin persistentes avisos. Hasta ahora, la única manera que hemos visto cómo hacer esto es añadir la clase CSS .is-dismissible a nuestro admin aviso div contenedor. Esto descarta el aviso del admin de la página actual, pero no es mucho uso en la práctica como reaparece cuando se vuelve a cargar una página de administración.

Entonces, ¿cómo podemos solucionarlo? Veremos varios métodos diferentes de despedir avisos del admin persistente, incluyendo:

  • Administrador único aviso que desaparece después de una vista.
  • Un contador de aviso del admin que desaparece después de un cierto número de puntos de vista.
  • Aviso de Sticky admin que queda despedido sobre actualización de la página.
  • Despido de acción personalizada (admin aviso quitada después de que ha completado la acción específica).

Antes de empezar a aplicar a cada uno de estos ejemplos, asegúrese de que todas las llamadas add_action() en Gwyer_Admin_Notices::init() han sido comentadas. Luego agregue un nuevo archivo dismissible-admin-notices.php a la carpeta de plugin de admin_notices. Abrir este nuevo archivo y agregue una nueva definición de clase:

En admin_notices.php, agregue otra require_once() llamada a importar nuestra nueva clase:

La clase Gwyer_Dismissible_Admin_Notices contendrá todo el código relacionadas con despedir a avisos de admin persisten.

Aviso de Administración Unica

El primer método que veremos es cómo mostrar un aviso de la administración sólo una vez para no aparecer en la carga de la página. Puede utilizar este método para notificar a un usuario cuando un plugin o tema solo se ha activado.

Vamos a hacer esto para nuestro plugin Admin avisos. Empezaremos por registrar una opción transitoria de WordPress en la activación del plugin que ha puesto a punto de caducar casi de inmediato.

En la clase Gwyer_Dismissible_Admin_Notices, agregue una llamada a register_activation_hook():

Requiere la función register_activation_hook() especificar la ruta al archivo principal del plugin, pero actualmente estamos en descartable-admin-notices.php. Tan sólo que no podemos usar la magia PHP constante __FILE__ hemos utilizado previamente como esta siempre apunta al archivo PHP actual.

En cambio, tenemos que construir el camino al principal plugin archivo nosotros mismos utilizar plugin_dir_path (__FILE__). ' admin-notices.php'.

Cuando se activa el plugin Admin avisos, se ejecutará código añadido a un método de clase set_admin_notice_transient, que definiremos a continuación.

Este método crea a un nuevo transitorio llamado a 'admin-notice-transient' con un valor de true y se encuentra a punto de expirar después de cinco segundos.

Vamos a hacer uso de este transitorio condicional mostrando un aviso de admin si estamos en la página de derecho admin y nuestro transitorio todavía existe.

Añadir una nueva llamada de add_action() a init().

Luego, agregar la función de devolución de llamada de display_admin_notice como un nuevo método de clase:

Semejantemente a los ejemplos anteriores, el admin aviso sólo se muestra si estamos en una página específica, en este caso, la página de plugins del administrador principal. Pero tenemos una condición adicional que el 'admin-notice-transient' también debe existir, caso contrario no mostrar el aviso de la administración.

Después se genera el aviso de la administración, el transitorio se elimina inmediatamente, a pesar de que inicialmente establecemos que expiran después de sólo cinco segundos. Sólo esto garantiza que no se muestra otra vez. Potencialmente, esto podría ocurrir si un usuario intentó actualizar la página de plugins muy rápidamente. Pero eliminando deliberadamente la transitoria, podemos estar seguros de que esto no será siempre el caso.

Para probar el código que hemos añadido, a los principales plugins y desactivar y luego activar, el plugin Admin avisos.

The one-off admin noticeThe one-off admin noticeThe one-off admin notice

La clave aquí es el lugar transitorio 'admin-notice-transient'. Sin esto, el aviso del admin al parecer cada vez que la página de plugins cargados (después fue activado el plugin), que no es lo que queremos.

Administrador Aviso Contador

Siguiente es un aviso del admin que mostrará un número determinado de veces, después de lo cual no será visible ya. También, esta vez alrededor no será restringida a cualquier página de administración particular.

Antes de comenzar, en la clase Gwyer_Dismissible_Admin_Notices, comente las llamadas de función register_activation_hook() y add_action(). Ahora vamos a configurar un aviso básico admin que te extienden la funcionalidad de poco.

Añadir una nueva llamada add_action() en init():

Y luego carne a la display_admin_notice_counter() de la función de devolución de llamada:

Esto mostrará un aviso de administración estándar que aparecerá en cada página de admin de WordPress.

Standard admin notice ready for customisationStandard admin notice ready for customisationStandard admin notice ready for customisation

Pensemos en lo que tenemos que hacer. Nuestro admin aviso debe mostrar un número determinado de veces, y cada vez aparece un contador interno se incrementa en uno. Una vez que se ha alcanzado el límite del contador, no vuelve a aparecer el aviso del admin.

Queremos el admin aviso que aparecerá en cualquier página de administrador y por lo que el valor del contador debe persistir entre carga de página. Una buena manera de hacerlo es utilizar una opción de base de datos para almacenar el valor del contador.

Agregar una propiedad de clase de contador para almacenar el valor límite del contador:

Esto se utilizará poco a gestionar cuantas veces aparece el aviso del admin. Dentro de display_admin_notice_counter(), actualizar el código como sigue:

Antes de la notificación de admin se muestra, estamos recuperando la opción contraria y se devuelve un valor predeterminado si todavía no existe. Después hace que el aviso del admin, la opción de contador es incrementada en uno y actualizada. Si no existe una nueva opción se creará para almacenar el valor actual.

También hemos actualizado la clase CSS para ser un aviso de la administración de información.

Trate de visitar varias páginas de admin y ver el contador aumenta cada vez.

Counter admin notice in actionCounter admin notice in actionCounter admin notice in action

La ++ $counter código es un ejemplo de un operador de incremento previo. Agrega un valor a $counter antes de se guarda en la base de datos. Si utiliza un operador de incremento post (es decir $counter ++) entonces el valor de $counter se almacena primero y luego aumentó, que no funcionaría.

Vamos a incorporar $counter_limit ahora para evitar el aviso de admin aparece demasiadas veces. Añadir esto a display_admin_notice_counter() debajo de la declaración de $counter:

Ahora, una vez que el aviso del admin ha mostrado cinco veces, no será visible en las páginas de admin posterior. Podría ser agradable, aunque, para mostrar un mensaje de la última vez que el aviso de admin aparece para que el usuario sepa que no aparece de nuevo. Ampliar la expresión condicional y salida un mensaje adicional:

Sin embargo, no verá el mensaje si ya has pasado sobre el límite del contador. Temporalmente puede solucionar esto mediante el aumento de la variable $counter_limit.

Display an additional message on the final renderDisplay an additional message on the final renderDisplay an additional message on the final render

Para propósitos de prueba, sería mejor poder restablecer el límite del contador. Si usted sabe cómo editar la base de datos, puede entrar y cambiar la opción directamente, pero esto puede ser tedioso hacerlo varias veces. Así que vamos a implementar nuestra propia función de reset.

En primer lugar, cambiar $counter_limit a 5 y agregar una nueva propiedad de la clase:

Luego, dentro de init() reemplazar

con

La función de restablecimiento debe ya sea mostrar nuestro aviso de administración contador o eliminar la opción de base de datos de admin_notice_counter y mostrar una advertencia de la administración en su lugar.

Para utilizar la nueva función de reset, simplemente cambiar $counter_reset a true y cargar cualquier página de admin.

Reset admin notice counterReset admin notice counterReset admin notice counter

Entonces cámbiala a false otra vez.

Admin notice counter successfully resetAdmin notice counter successfully resetAdmin notice counter successfully reset

Nota: Este método podría usarse fácilmente para mostrar un aviso de la administración sólo una vez, como hicimos en el ejemplo anterior, pero es un poco más complicado para configurar. Realmente depende de sus requisitos.

Si todo lo que necesitan es un solo uso admin aviso luego del método anterior probablemente adapte a tus necesidades mejor y es más rápido de implementar. Pero el método de contador es más flexible y una vez instalado, es justo como fácil de usar en sus propios proyectos.

Conclusión

Hemos cubierto mucho terreno en la parte tres de esta serie de tutoriales. Hemos visto cómo controlar cuando el admin avisos aparecen en el lugar de siempre que aparecen tan pronto como haya terminado de una página de admin carga. Esto es útil de muchas maneras, pero nuestro ejemplo demostró cómo mostrar una notificación personalizada admin después de plugin opciones habían sido salvados.

Luego, nos trasladamos a dos ejemplos distintos de despedir admin persistentes avisos. Esto le da mucha flexibilidad en cómo presentas avisos del admin para el usuario. Y en la siguiente y última parte de esta serie de tutoriales, te a ver más formas de despedir admin persistentes avisos.

Y, un poco de diversión, crearemos nuestra propia costumbre admin tipos de aviso y agregar decoraciones de icono.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.