Antiguamente, no había en WordPress una forma “sencilla” de añadir acciones en lote en las páginas de listado de entradas, páginas o Custom Post Type. Lo que se debía hacer era añadir estas acciones mediante jQuery, que básicamente se sobrescribía el desplegable de acciones y se añadían las nuevas acciones.
Desde hace algunas versiones, es mucho más sencillo añadir nuevas acciones mediante dos filtros.
Los filters de WordPress que deberemos utilizar son:
- bulk_actions-edit-{$post}
- handle_bulk_actions-edit-{$post}
Mediante el filtro bulk_actions-edit-{$post}, añadiremos las acciones, y mediante handle_bulk_actions-edit-{$post} realizaremos las acciones.
$post lo deberemos sustituir por el nombre del Post Type (ya sea estándar o personalizado), es decir, si por ejemplo quisiéramos añadir una acción en lote (bulk action) al listado de entradas, deberíamos utilizar el filtro bulk_actions-edit-post, si fuera en las páginas, bulk_actions-edit-page y si por ejemplo fuera en el listado de pedidos de WooCommerce utilizaríamos bulk_actions-edit-shop_order
Aquí tenéis un ejemplo de cómo quedaría al final sin lo que realizan las acciones (lógicamente), eso os lo dejo para vosotros.
https://gist.github.com/joseconti/111b7536ede18bcf45eb655ddafe11ba
Fijaos que en el handler, siempre devolvemos $redirect_to. El redirect se formatea de forma automática mediante el add_query_arg(), que se incluye en nombre de la acción, la cantidad de “post” que se han enviado a realizar la acción, y el $redirect_to que es pasado cuando se solicita realizar la acción bulk.
Cómo podéis ver, ahora hay una forma en el core de WordPress para realizar acciones en lote y ya no es necesario realizar “hacks” mediante jQuery para añadirlas.
Grande Jose, si te hubiera leído más no hubiera perdido todo el dia buscando como hacerlo …
Muchas gracias
De nada, me alegro que te haya servido 🙂