Listado de Usuarios AJAX
Solución a Prueba Técnica de Wordpress de Josue Hernández Pozo
by Josue Ernesto Hernández Pozo · github.com/jhernandezpozo/user-list-ajax-plugin
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/jhernandezpozo/user-list-ajax-plugin/archive/refs/heads/main.zipPrueba Técnica WordPress de Josue Hernández Pozo- Listado AJAX
Este plugin genera un listado de usuarios consumiendo una API simulada con filtrado y paginación asíncrona.
Instalación y Uso
- Clonar el repositorio en "wp-content/plugins/".
- Importar el archivo en la carpeta "BBDD/" a la base de datos local.
- Activar el plugin desde el panel de administración.
- Usar el shortcode "[listado_usuarios]" en cualquier página.
Base de Datos (Solo informativo, no es requisito para el uso del plugin)
Para el desarrollo y visualización de los resultados se usó un usuario de WP (registrado en bbdd.sql) cuyas credenciales son las siguientes:
- User: admin
- Password: admin123*
- Email: prueba@gmail.com
Requisitos
- WordPress 6.0+
- PHP 8.0+
Descripción
Este proyecto consiste en el desarrollo de un plugin de WordPress que implementa un módulo para mostrar un listado de usuarios con las siguientes características:
- Listado paginado (5 usuarios por página)
- Filtro por:
- Nombre
- Apellidos
- Actualización dinámica mediante AJAX (sin recarga de página)
- Simulación de una API externa:
- Genera usuarios dinámicamente
- Permite aplicar filtros y paginación
- Devuelve datos en formato JSON
Seguridad y Buenas Prácticas
Este proyecto sigue los estándares de desarrollo de WordPress para garantizar la integridad de los datos y la seguridad del sitio:
Verificación de Nonces: Se implementó un token de seguridad (nonce) mediante wp_create_nonce y check_ajax_referer para prevenir ataques de falsificación de solicitudes entre sitios (CSRF) en todas las llamadas AJAX.
Sanitización de Entradas: Todos los datos recibidos desde el formulario de búsqueda se limpian antes de ser procesados utilizando sanitize_text_field() y sanitize_email().
Escapado de Salida: Para prevenir ataques XSS (Cross-Site Scripting), toda la información mostrada en la tabla de usuarios se escapa en el momento de la impresión usando esc_html() y printf().
Restricción de Acceso Directo: El archivo principal del plugin incluye una comprobación de seguridad defined('ABSPATH') || exit; para evitar la ejecución directa de scripts desde el navegador.
Prevención de Inyección de Código: Al no utilizar SQL directo y procesar la información de forma programada mediante PHP puro, se elimina el riesgo de inyecciones SQL en la visualización del listado.
Autor Josue Ernesto Hernández Pozo
Desarrollado como prueba técnica para puesto de desarrollador PHP / WordPress.
Notas finales
El proyecto está preparado para ser clonado, instalado y ejecutado directamente siguiendo los pasos descritos. Se ha priorizado la claridad, mantenibilidad y buenas prácticas en el código.