Contents
Introducción
En este tutorial detallado explico cómo añadir acciones masivas (bulk actions) personalizadas a la lista de entradas (Posts) en el escritorio de WordPress usando PHP. Cubriré desde la adición del elemento en el menú desplegable hasta su procesamiento seguro, mostrando ejemplos concretos y buenas prácticas: verificación de permisos, NONCE, redirección con mensajes y consideraciones de rendimiento.
Requisitos y contexto
- Conocimientos básicos de PHP y WordPress (hooks/filters, capacidades, metadatos).
- Acceso para añadir código en un plugin o en functions.php (recomendado: un plugin personalizado para mantener la lógica separada).
- Este tutorial usa los hooks estándar de WP para las listas de posts: bulk_actions-edit-{post_type} y handle_bulk_actions-edit-{post_type}.
Visión general del flujo
- Registrar la nueva acción masiva para la pantalla de edición (lista de posts).
- Procesar el envío cuando el usuario aplica esa acción a varios posts.
- Redirigir a la lista mostrando un mensaje de éxito/errores.
- Asegurar permisos y validación (NONCE, capability checks) y considerar rendimiento.
1) Añadir la opción en el desplegable de Bulk Actions
Usamos el filtro bulk_actions-edit-post (si quieres otro tipo de contenido, reemplaza post por el slug del post type).
Notas:
- La clave (aquí mark_featured) es el valor que WordPress enviará cuando se aplique la acción.
- Si trabajas con un post type personalizado, cambia el hook a bulk_actions-edit-{mi_post_type}.
2) Procesar la acción masiva
El hook recomendado para procesar acciones masivas es handle_bulk_actions-edit-post. Este hook recibe 3 parámetros: la URL de redirección, la acción aplicada y un array con los IDs de los posts seleccionados. Debes validar permisos y NONCE y devolver la URL de redirección (posiblemente con parámetros que indiquen resultados para mostrar notificaciones).
post_id, post_status => publish ) ) processed } // Añadimos un parámetro para mostrar una notificación en admin_notices return add_query_arg( bulk_mark_featured, processed, redirect_to ) } ?>
Explicación de seguridad y validación:
- Se comprueba el _wpnonce usando wp_verify_nonce con la acción bulk-posts. Es la comprobación estándar que WP añade al form de acciones masivas.
- Se valida capability individual con current_user_can(edit_post, post_id) para evitar que se procesen items que el usuario no pueda modificar.
- Para acciones que modifican datos sensibles o cambian estado, considera registrar una acción diferente por separado o solicitar confirmación adicional antes del cambio.
3) Mostrar notificaciones (admin_notices)
Para informar al usuario del resultado usamos un parámetro en la URL de redirección y un hook admin_notices que lo detecta.
%s