Siempre he pensado que un buen desarrollador es aquel que automatiza cualquier tarea que deba realizar más de dos veces. Y si adquieres el hábito de automatizar todas tus tareas, quizás llegue el día en que no tengas que trabajar nunca más ? (lo dudo, pero por soñar que no quede ?). Yo, por ejemplo, ya he empezado mi plan de prejubilación automatizando, por ejemplo, el proceso de publicación de nuevas versiones de nuestros plugins.
Como desarrollador de plugins de WordPress, tu tarea también debería ser hacerle la vida más sencilla a tus usuarios. Esto lo puedes conseguir, evidentemente, creando un plugin que literalmente automatice sus tareas (como por ejemplo hacemos nosotros con Nelio Content, el cual automatiza totalmente la promoción de tu blog en las redes sociales). Pero no sólo de automatizaciones vive el hombre; también puedes ahorrar trabajo a tus usuarios si eres capaz de simplificar sus tareas, reduciendo, por ejemplo, el número de pasos necesarios para completarlas. Y precisamente de esto venía hoy a hablarte.
Hace ya un par de añitos escribí una entrada (que, por cierto, sigue siendo muy actual ?) sobre cómo crear tu primer plugin en WordPress. En ella te expliqué, paso a paso, cómo podíamos meter una caja en la página de edición de entradas para añadir información extra en tus entradas. Pues bien, hoy veremos qué podemos hacer para simplificar la vida a nuestros usuarios y mejorar su rendimiento a la hora de usar nuestros plugins.
Punto de partida: un pequeño plugin con pequeña caja (meta box)
Supongamos que tenemos un plugin tipo Nelio Content, el cual va recompartiendo el contenido de tu blog en las redes sociales. A lo mejor el usuario está interesado en que ciertas entradas no se recompartan automáticamente, con lo que necesita algún mecanismo para indicar qué entradas pueden usarse y cuáles no. Pues bien, de la misma forma que hicimos en ese primer tutorial, supondremos que este plugin añade una pequeña caja a la página de edición de entradas con una casilla de selección tal que así:

Cuando la casilla no está activada, el plugin puede compartir la entrada en las redes sociales. Pero cuando el usuario la activa, entonces el plugin ya no puede compartir esa entrada en concreto. Sencillísimo, ¿verdad?
El usuario debe ser el centro de todas las decisiones que tomes
Si queremos ponerle la vida más fácil a nuestros usuarios, lo primero que tendremos que hacer es identificar qué tareas son las que más trabajo le llevan. En nuestro ejemplo creo que está claro que la tarea más tediosa a la que se enfrenta es, precisamente, configurar qué entradas se deben compartir y cuáles no.

Nelio Content
Estoy tan contento con Nelio Content que parece que me hayan pagado para hablar bién de él… pero es que también a ti te encantará: funciona como prometen, la programación automática de mensajes es increíble, la calidad/precio no tiene parangón y su equipo de soporte se siente como si fueran parte del tuyo.

Panozk
Identificando el problema
Fíjate que en la versión actual del plugin, tal cual lo hemos definido, cuando un usuario quiere cambiar las opciones de compartición de una entrada debe realizar los siguientes pasos:
- Buscar la entrada en la lista con Todas las entradas
- Entrar a Editar la entrada en cuestión
- Esperar a que cargue la página de edición (cosa que suele tardar unos segundos)
- Hacer scroll para buscar la caja que hemos añadido
- Modificar el valor de la casilla de selección para que se corresponda con la configuración que desea
- Hacer scroll nuevo hacia arriba para ir a buscar la caja de Publicar
- Hacer click en Guardar
Complicado, ¿verdad? ? ¡Y esto por cada entrada que quiera configurar! Para morirse… ?
Posibles soluciones
Una vez identificado el problema, tenemos que pensar en las posibles soluciones que podemos implementar. Así a bote pronto se me ocurren dos:
- Aprovecharnos de la clasificación por categorías y/o etiquetas y decidir qué entradas se recomparten o no en función de esa clasificación. Por ejemplo, todas las entradas de la categoría WordPress se recomparten, pero ninguna de Comunidad.
- Aprovechando las Acciones en lote de WordPress, podemos añadir la casilla de selección de la caja directamente en la página donde aparecen listadas las entradas. De esta forma, podemos seleccionar múltiples entradas, editarlas en bloque y aplicarles el valor que queramos.
Cuando tengas que escoger qué solución implementar para ayudar a tus usuarios, recuerda que todas tienen algunas ventajas y algunos inconvenientes, así que valora bien cuál acabas escogiendo. En este caso, yo me decantaría por la segunda opción: la casilla de selección es sencilla de entender y el usuario ya está familiarizada con ella, así que lo único que hacemos es meterla en un formulario más (el de Edición en lote). La primera solución, en cambio, aunque sea más potente y versátil probablemente añada una mayor complejidad a la interfaz de usuario y al código, con lo que los posibles beneficios quedan minimizados.
Cómo añadir un nuevo elemento en las Acciones en lote de entradas
Para añadir una nueva Acción en lote en la lista de entradas de WordPress tenemos que seguir cuatro sencillos pasos:
- Añadir una nueva columna en la tabla de Entradas. Esto es debido a que únicamente podemos editar por lotes los valores que aparezcan en la tabla.
- Ya que añadimos la nueva columna en la tabla, tenemos que asegurarnos de que, cuando la columna sea visible, esta muestre el valor que toca para cada entrada.
- Ahora sí, añadir la casilla de selección en el formulario de Edición en lote.
- Preparar el código de WordPress para que almacene el valor del campo de formulario que hemos añadido en el paso anterior.
con lo que conseguiríamos el siguiente resultado:

Nueva columna en la tabla de Entradas
Se trata de un paso muy sencillito. Basta con engancharse a la acción manage_posts_columns
y, para los tipos de contenido que queramos (en nuestro caso, sólo post
), añadir la nueva columna:
Poner el valor correcto en nuestra nueva columna
En este caso, vamos a usar la acción llamada manage_posts_custom_column
que, precisamente, sirve para volcar contenido dentro de cada fila de la tabla. Así pues, cuando estemos en la columna para recompartir una entrada, comprobamos en qué estado está y lo escribimos por pantalla con un echo
:
Añadir la casilla de selección en el formulario
De nuevo, aprovechamos las acciones y filtros de WordPress para realizar la tarea. En concreto, nos enganchamos a bulk_edit_custom_box
y pintamos por pantalla el campo de formulario que nos interesa:
Aquí merece la pena comentar una curiosidad: fíjate que en lugar de poner directamente la casilla de selección, he puesto un selector select
. ¿Por qué?, te estarás preguntando. Pues el motivo es muy sencillo: una casilla de selección sólo tiene dos estados (seleccionada o no seleccionada), así que cada vez que use la Edición en lote estaré activando o desactivando la opción para todas las entradas seleccionadas. Sin embargo, con el selector puedo añadir un tercer estado: por un lado tengo activar y desactivar la opción (como hacía con la casilla propiamente dicha) y por otro lado añado la posibilidad de «dejarlo todo como está, sin modificar el valor que cada entrada individualmente tenga». El resultado de este selector lo vas a ver más claro en el siguiente paso.
Guardar el valor seleccionado (si toca)
Finalmente, ya sólo nos queda guardar el valor en la base datos para cada entrada. De nuevo, se trata de una acción sencillísima: únicamente tenemos que meter nuestra función en la acción save_post
, recuperar el valor del campo de la variable $_REQUEST
y, en función de este, actualizar la entrada como toque:
¿Has visto qué fácil? Como has podido comprobar, en el switch tengo 3 estados, que hacen referencia a las tres opciones del selector anterior. Si se selecciona la opción de no hacer cambios, no hacemos nada.
Conclusión
Hoy hemos visto que añadir acciones por lote en WordPress es muy sencillo y que hacerlo puede tener un impacto positivo en la usabilidad de tu plugin. Pero cuidado, no caigas en la tentación de meter de todo allí; fíjate que antes de haber tomado la decisión de crear o no una acción por lote, hemos estudiado las dificultades a las que se enfrentan nuestros usuarios y la propuesta ha surgido como solución a un problema. Aprovecha las herramientas que te da WordPress para hacer las cosas más sencillas.
En definitiva, mi consejo final es el siguiente: simplifica o automatiza todo lo que sea un peñazo y tus usuarios te lo agradecerán.
Imagen destacada de Iker Urteaga vía Unsplash.
Deja una respuesta