Codex para WordPress: cómo desarrollar plugins, depurar errores y revisar seguridad
Aprende a utilizar OpenAI Codex para desarrollar WordPress: analizar plugins y themes, trabajar con PHP, MySQL, AJAX, REST API, WooCommerce y JavaScript, encontrar bugs, revisar seguridad, ejecutar tests y organizar workflows avanzados con AGENTS.md, Skills, Subagents, Worktrees y Automations.
¿Se puede usar Codex para programar WordPress?
Sí. Codex puede trabajar directamente sobre el código de un proyecto WordPress para explorar su arquitectura, editar plugins y themes, investigar errores, crear funcionalidades, revisar consultas SQL, analizar handlers AJAX y endpoints REST, ejecutar herramientas de verificación y revisar cambios con Git. Su mayor ventaja aparece cuando le das acceso al repositorio, reglas persistentes y criterios claros de aceptación en lugar de utilizarlo únicamente como generador de fragmentos PHP.
Qué puede hacer Codex en un proyecto WordPress
Plugins
Crear, analizar y mantener plugins propios.
Debugging
Rastrear errores PHP, JavaScript y flujos de datos.
MySQL
Revisar consultas, tablas y persistencia.
REST + AJAX
Construir y auditar endpoints y requests.
WooCommerce
Trabajar con hooks, pedidos, productos y cuentas.
Seguridad
Revisar permisos, nonces, input y output.
No empieces pidiendo código: empieza entendiendo el proyecto
Explora
Plugin, hooks, tablas y flujos.
Planifica
Define archivos, cambios y riesgos.
Implementa
Aplica el cambio mínimo necesario.
Verifica
Tests, sintaxis, seguridad y diff.
Abre el proyecto WordPress correcto
cd wp-content/plugins/mi-plugin
git status
codex
También puedes iniciar Codex directamente sobre otra ruta:
codex --cd /ruta/wordpress/wp-content/plugins/mi-plugin
Si estás desarrollando un plugin independiente, normalmente conviene abrir la carpeta del plugin. Si el cambio afecta múltiples plugins, themes o configuración del sitio, puede ser mejor trabajar desde una raíz superior.
Pide primero un mapa completo del plugin
Analiza este plugin WordPress.
No modifiques archivos todavía.
Explícame:
1. propósito del plugin
2. archivo bootstrap
3. clases principales
4. hooks actions y filters
5. shortcodes
6. endpoints REST
7. handlers AJAX
8. tablas personalizadas
9. opciones utilizadas
10. cron jobs
11. JavaScript y CSS
12. integraciones externas
13. dependencias
14. flujo de datos
15. zonas sensibles de seguridad
Indica los archivos
y funciones exactas
para cada punto.
Antes de implementar, Codex debería localizar dónde vive realmente la funcionalidad que quieres cambiar.
Crea un AGENTS.md para tu proyecto WordPress
Si trabajas repetidamente sobre el mismo plugin, no deberías explicar las mismas reglas en cada prompt.
# WordPress project instructions
## Stack
- WordPress
- PHP
- MySQL
- JavaScript
- AJAX
- REST API
- WooCommerce where present
## General rules
- Do not modify WordPress core.
- Prefer WordPress APIs over custom replacements.
- Preserve existing public APIs.
- Avoid unrelated refactors.
- Keep changes narrowly scoped.
- Follow the existing plugin architecture.
## Security
- Validate input when a strict rule exists.
- Sanitize untrusted input.
- Escape output according to context.
- Check user capabilities for privileged actions.
- Use nonces for CSRF protection where appropriate.
- Never treat a nonce as authorization.
- Use prepared SQL for dynamic database queries.
- Review REST permission callbacks.
- Never expose credentials or secrets.
## Database
- Preserve existing table prefixes.
- Do not delete production data.
- Explain migrations before implementing them.
- Avoid schema changes unless required.
## Verification
Before finishing:
1. run PHP syntax checks on changed PHP files
2. run project tests when available
3. run linting when configured
4. inspect git diff
5. look for debug code
6. report files changed
7. report tests executed
8. report remaining risks
Describe una funcionalidad como si fuera un GitHub Issue
Objetivo:
Añadir un campo "Teléfono"
al formulario de registro
del plugin.
Comportamiento actual:
El formulario guarda:
- nombre
- email
- categoría
Comportamiento esperado:
- mostrar teléfono
- validar formato
- sanitizar antes de guardar
- guardar en la estructura existente
- mostrarlo en el panel administrativo
- mantener compatibilidad con registros antiguos
Restricciones:
- no modificar WordPress core
- no crear una tabla nueva
- no cambiar URLs públicas
- no romper usuarios existentes
- seguir la arquitectura actual
Antes de editar:
1. identifica los archivos afectados
2. explica el flujo actual
3. propón un plan
4. indica riesgos
Después implementa
el cambio mínimo.
Finalmente ejecuta
las verificaciones disponibles
y revisa el diff.
Pide un plan antes de tocar código
No modifiques archivos todavía.
Crea un plan de implementación.
Para cada paso indica:
- archivo
- función o clase
- cambio necesario
- motivo
- dependencia
- riesgo
- forma de verificarlo
Busca reutilizar
la arquitectura existente.
Evita crear
abstracciones nuevas
si el proyecto ya tiene
una solución equivalente.
WordPress tiene proyectos que mezclan código procedural, clases, AJAX, shortcodes y templates. Un plan previo ayuda a evitar que Codex cree una arquitectura paralela innecesaria.
Codex puede revisar seguridad WordPress de forma sistemática
Validación y sanitización de entrada.
Escape de output.
Verificación de nonces.
Capabilities y autorización.
Consultas preparadas.
permission_callback de endpoints.
Uploads y filesystem.
Secrets y credenciales.
Auditoría de seguridad de un plugin WordPress
Haz una auditoría
de seguridad de este plugin WordPress.
No modifiques archivos.
Revisa especialmente:
1. $_GET
2. $_POST
3. $_REQUEST
4. $_FILES
5. AJAX handlers
6. REST routes
7. admin-post handlers
8. formularios
9. SQL dinámico
10. uploads
11. operaciones de filesystem
12. opciones y metadata
13. autenticación
14. autorización
15. nonces
16. credenciales
17. output HTML
Para cada hallazgo incluye:
- severidad
- archivo
- línea
- código afectado
- vulnerabilidad
- escenario realista
- impacto
- corrección recomendada
No reportes
problemas puramente teóricos
sin una ruta plausible
de explotación.
Nonce no significa autorización
Intención / CSRF
Ayuda a verificar que una petición proviene del flujo esperado.
Autorización
Determina si ese usuario puede realizar realmente la acción.
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error(
array( 'message' => 'Unauthorized' ),
403
);
}
check_ajax_referer(
'my_plugin_action',
'nonce'
);
Un nonce válido no significa por sí solo que el usuario tenga permiso para ejecutar una acción privilegiada.
Validar, sanitizar y escapar no son lo mismo
| Etapa | Objetivo | Ejemplos |
|---|---|---|
| Validar | Comprobar que el dato cumple la regla esperada | Email válido, ID entero, valor permitido |
| Sanitizar | Limpiar una entrada antes de utilizarla | sanitize_text_field() |
| Escapar | Preparar el dato para el contexto de salida | esc_html(), esc_attr(), esc_url() |
$title = isset( $_POST['title'] )
? sanitize_text_field(
wp_unslash( $_POST['title'] )
)
: '';
echo esc_html( $title );
Pide a Codex que detecte SQL construido manualmente
Busca en este plugin:
- consultas $wpdb
- SQL concatenado
- variables dentro de queries
- LIKE dinámicos
- nombres de tablas dinámicos
Comprueba si cada consulta
maneja correctamente
los valores dinámicos.
Prioriza el uso
de $wpdb->prepare()
cuando corresponda.
No modifiques nada todavía.
Devuelve:
archivo,
línea,
query
y riesgo.
Ejemplo
$row = $wpdb->get_row(
$wpdb->prepare(
"SELECT * FROM {$table}
WHERE id = %d",
$id
)
);
Revisar handlers AJAX con Codex
Encuentra todos
los handlers AJAX
del plugin.
Para cada uno determina:
- hook registrado
- usuarios autenticados o públicos
- parámetros recibidos
- nonce
- capability check
- validación
- sanitización
- consultas SQL
- cambios de estado
- estructura de respuesta
Marca específicamente
cualquier handler
que permita escritura
sin autorización suficiente.
La seguridad real del flujo AJAX está en el handler PHP que procesa la solicitud.
Audita permission_callback en cada endpoint
register_rest_route(
'my-plugin/v1',
'/settings',
array(
'methods' => 'POST',
'callback' => 'my_plugin_save_settings',
'permission_callback' => function () {
return current_user_can(
'manage_options'
);
},
)
);
Si realmente debe ser público, la decisión debe ser intencional y coherente con los datos y acciones que expone.
No le pidas a Codex que “pruebe cosas” al azar
Investiga este bug.
Síntoma:
Al guardar el formulario,
la pantalla muestra éxito
pero el registro
no aparece en la base de datos.
No modifiques código todavía.
Sigue este proceso:
1. reproduce el flujo
2. identifica el entry point
3. sigue los datos
desde frontend hasta DB
4. revisa request y response
5. revisa logs
6. localiza el punto
donde se pierde el dato
7. determina la causa raíz
8. explica por qué ocurre
Solo después
propón la corrección mínima.
Esto evita que Codex cambie código cercano al síntoma sin demostrar que ese código es la causa del problema.
Haz que Codex base el diagnóstico en datos reales
Errores y warnings.
Request y response AJAX/REST.
Consulta y resultado.
Errores de consola.
Test que reproduce el fallo.
Cambios que introdujeron la regresión.
Pide a Codex que respete la estructura existente
Antes de crear archivos nuevos:
1. busca cómo resuelve
este proyecto
funcionalidades similares
2. reutiliza:
- clases existentes
- helpers
- repositories
- services
- hooks
- templates
- convenciones
3. no introduzcas
un framework paralelo
4. explica
cualquier nueva abstracción
antes de crearla
WordPress Coding Standards como criterio de revisión
Puedes incluir dentro de AGENTS.md o de una Skill:
When editing WordPress code:
- follow the project's existing style
- follow WordPress security best practices
- preserve translatability
- preserve backwards compatibility
- use WordPress APIs where appropriate
- maintain accessibility requirements
- do not change third-party vendor code
- do not perform style-only rewrites
unless requested
Usa las herramientas del proyecto, no reglas inventadas
Si el proyecto ya tiene WordPress Coding Standards configurado, Codex puede ejecutar su comando de linting.
# Ejemplos cuando el proyecto
# ya tiene estas herramientas configuradas
vendor/bin/phpcs
vendor/bin/phpunit
php -l archivo.php
No asumas que todos los plugins WordPress utilizan exactamente el mismo comando de test o linting.
Codex también puede trabajar sobre extensiones WooCommerce
Analiza la integración
WooCommerce de este plugin.
Mapea:
- hooks utilizados
- productos
- carrito
- checkout
- pedidos
- Mi Cuenta
- endpoints
- metadata
- estados personalizados
- emails
- cron jobs
Después identifica:
- dependencias de WooCommerce
- APIs internas utilizadas
- posibles incompatibilidades
- acceso directo innecesario
a estructuras internas
- puntos sensibles
de autorización
No modifiques código.
Primero haz que Codex identifique qué APIs, hooks y convenciones ya utiliza el plugin.
Trata las migraciones como cambios de alto riesgo
Necesitamos añadir
una columna a la tabla
del plugin.
No implementes todavía.
Analiza:
1. cómo se crea actualmente la tabla
2. cómo se guarda la versión del esquema
3. cómo se ejecutan upgrades
4. instalaciones nuevas
5. instalaciones existentes
6. rollback posible
7. datos antiguos
8. índices
9. compatibilidad
10. riesgo de pérdida de datos
Propón primero
un plan de migración
seguro e idempotente.
Revisa activación, desactivación y uninstall por separado
| Evento | Uso típico |
|---|---|
| Activación | Inicialización, defaults, estructuras necesarias |
| Desactivación | Limpiar estado temporal o tareas que no deben seguir activas |
| Uninstall | Eliminar datos permanentes solo cuando realmente corresponde |
Un plugin puede desactivarse temporalmente. La eliminación definitiva es otro evento y merece decisiones explícitas sobre datos.
Codex puede modificar PHP, JavaScript y CSS dentro del mismo flujo
Corrige este formulario
sin cambiar su diseño.
Problema:
Después de enviar por AJAX,
el mensaje de éxito
aparece correctamente,
pero el formulario
puede enviarse dos veces.
Requisitos:
- localizar causa raíz
- bloquear doble submit
- preservar accesibilidad
- mantener mensajes existentes
- no introducir jQuery
si el proyecto no lo usa
- no modificar estilos
no relacionados
Verifica
el flujo completo
frontend → PHP → respuesta.
No dejes que una corrección visual rompa accesibilidad
Navegación con teclado.
Labels asociados a inputs.
Estados de foco visibles.
Mensajes de error comprensibles.
HTML semántico.
ARIA solo cuando aporta valor.
Crea workflows WordPress reutilizables
.agents/
└── skills/
├── wordpress-security-review/
│ └── SKILL.md
│
├── wordpress-debug/
│ └── SKILL.md
│
├── database-migration-review/
│ └── SKILL.md
│
└── wordpress-release/
└── SKILL.md
Ejemplo reutilizable para seguridad
---
name: wordpress-security-review
description: Audit WordPress plugins and themes for security problems involving input, output, authorization, AJAX, REST API, SQL, uploads and secrets.
---
# WordPress Security Review
Check:
1. validation
2. sanitization
3. escaping
4. nonces
5. capabilities
6. SQL
7. AJAX handlers
8. REST permission callbacks
9. file operations
10. secrets
Do not modify code.
Return findings ordered by severity.
For every finding include:
- file
- line
- vulnerability
- realistic impact
- recommended correction
Desarrolla cambios WordPress sin ensuciar tu checkout principal
Trabajo normal
Edición que estás haciendo manualmente.
Trabajo Codex
Feature, bugfix o experimento aislado.
Esto resulta especialmente útil para:
Probar una corrección.
Refactor grande.
Compatibilidad PHP.
Aplicar correcciones de seguridad.
Divide una revisión WordPress entre especialistas
Analiza este plugin
con cuatro subagentes.
architecture:
mapea clases,
hooks,
requests
y persistencia.
security:
revisa nonces,
capabilities,
input,
output,
SQL
y REST.
compatibility:
revisa PHP,
WordPress
y WooCommerce.
testing:
identifica
flujos críticos
sin cobertura.
Trabajen en paralelo.
No modifiquen archivos.
Después consolida
los resultados,
elimina duplicados
y ordena
los hallazgos
por severidad.
Conecta Codex con documentación cuando necesites verificar APIs
Antes de utilizar
una API de WordPress
o una integración externa:
1. verifica la documentación actual
2. confirma la firma
3. confirma parámetros
4. confirma comportamiento
5. identifica deprecaciones
6. solo entonces implementa
Automatiza revisiones recurrentes del plugin
$wordpress-security-review
Revisa únicamente
los cambios
desde la ejecución anterior.
Comprueba:
- PHP syntax
- security
- AJAX
- REST
- database
- debug code
- deprecated patterns
No modifiques archivos.
Si no existen
hallazgos nuevos,
indícalo claramente.
Haz una revisión independiente del cambio
/review
También puedes usar un prompt focalizado:
Revisa el diff actual.
Busca únicamente:
- bugs reales
- regresiones
- autorización insuficiente
- SQL inseguro
- output sin escape
- AJAX o REST inseguros
- pérdida de datos
- problemas de compatibilidad
- tests importantes faltantes
No reportes
preferencias subjetivas
de estilo.
Ordena
por severidad.
Qué pedir a Codex antes de considerar terminado un cambio
PHP syntax correcto.
Tests relevantes ejecutados.
Linting del proyecto cuando exista.
Inputs revisados.
Outputs escapados.
Capabilities revisadas.
Nonces donde correspondan.
SQL dinámico revisado.
REST y AJAX revisados.
git diff revisado.
Sin var_dump, print_r o debug accidental.
Riesgos restantes documentados.
Prompt para preparar una nueva versión del plugin
Prepara este plugin
para una nueva release.
No publiques nada.
Comprueba:
1. git status
2. versión actual
3. archivos de versión
4. changelog
5. PHP syntax
6. tests
7. linting
8. debug code
9. dependencias
10. assets generados
11. archivos no deseados
12. compatibilidad
13. seguridad del diff
Después entrega:
- blockers
- warnings
- cambios incluidos
- comandos ejecutados
- estado final
No hagas push,
tag,
deploy
ni publicación.
Cómo no usar Codex con WordPress
| Error | Mejor enfoque |
|---|---|
| “Créame un plugin completo” | Divide requisitos y construye por features |
| Editar sin explorar | Mapea primero arquitectura y flujo |
| Dar acceso total siempre | Usar permisos mínimos |
| Confiar en un nonce como permiso | Revisar también capabilities |
| Concatenar SQL | Usar APIs y preparación apropiada |
| Refactorizar todo al corregir un bug | Aplicar primero el cambio mínimo |
| No ejecutar tests | Exigir evidencia de verificación |
| Modificar producción directamente | Git, staging y worktrees |
Plantilla para trabajar con WordPress y Codex
Objetivo:
[describe el resultado]
Contexto:
[explica el problema]
Comportamiento actual:
[qué ocurre ahora]
Comportamiento esperado:
[qué debería ocurrir]
Archivos o módulos relevantes:
[si los conoces]
Restricciones:
- no modificar WordPress core
- no romper APIs públicas
- mantener compatibilidad existente
- reutilizar arquitectura actual
- evitar refactors no relacionados
- aplicar permisos mínimos
- respetar prácticas de seguridad WordPress
Antes de editar:
1. explora el flujo actual
2. identifica archivos y funciones
3. explica la causa o arquitectura
4. crea un plan
5. enumera riesgos
Implementación:
- realiza el cambio mínimo
- conserva estilo existente
- añade o actualiza tests
cuando exista infraestructura
Seguridad:
revisa:
- validation
- sanitization
- escaping
- nonces
- capabilities
- SQL
- AJAX
- REST
- filesystem
- secrets
Verificación:
1. PHP syntax
2. tests
3. lint
4. flujo afectado
5. git diff
Respuesta final:
- qué cambió
- archivos modificados
- causa raíz si había un bug
- tests ejecutados
- riesgos restantes
Workflow recomendado de Codex para WordPress
Git
Comprueba el estado del proyecto.
Contexto
Lee AGENTS.md e instrucciones.
Exploración
Mapea el flujo antes de editar.
Plan
Define cambio, archivos y riesgos.
Implementación
Realiza el cambio mínimo.
Seguridad
Revisa input, output, permisos y SQL.
Verificación
Ejecuta tests, lint y sintaxis.
Review
Inspecciona el diff final.
Guías relacionadas
Documentación recomendada
How OpenAI uses Codex
Workflows, prompts, contexto y buenas prácticas.
Ver guía →Plugin Handbook
Arquitectura, hooks, seguridad y APIs.
Ver handbook →Security
Input, output, nonces y capacidades.
Ver seguridad →Coding Standards
PHP, JavaScript, HTML, CSS y accesibilidad.
Ver estándares →REST API
Endpoints, permisos y arquitectura REST.
Ver REST API →wpdb::prepare()
Preparación de consultas SQL dinámicas.
Ver referencia →FAQ sobre Codex para WordPress
Sí. Codex puede analizar y modificar repositorios WordPress, desarrollar plugins y themes, trabajar con PHP, JavaScript, MySQL, AJAX y REST API, ejecutar comandos y revisar los cambios resultantes.
Sí, pero para proyectos no triviales es mejor dividir el trabajo en funcionalidades claramente delimitadas. Primero conviene definir arquitectura, datos, permisos, interfaces y criterios de aceptación antes de implementar cada parte.
Sí. Puede seguir un flujo desde el frontend hasta PHP y base de datos, analizar logs, requests, respuestas, consultas y cambios Git para localizar la causa raíz de un error.
Sí. Puede analizar plugins que integran WooCommerce y trabajar con hooks, productos, pedidos, checkout, Mi Cuenta, metadata y otras APIs utilizadas por el proyecto.
Sí. Puedes pedirle que revise validación, sanitización, escaping, nonces, capabilities, consultas SQL, AJAX, REST API, uploads, filesystem y exposición de credenciales.
No. Los nonces ayudan a proteger contra solicitudes no intencionadas o CSRF, pero no sustituyen la autorización. Las acciones privilegiadas también deben comprobar las capacidades apropiadas del usuario.
Sí. Puede localizar consultas mediante $wpdb, identificar SQL dinámico y revisar si los valores variables están manejados de forma segura, incluyendo el uso de $wpdb->prepare() cuando corresponde.
Sí. Puede mapear rutas registradas, métodos, callbacks, argumentos y permission_callback para detectar endpoints que exponen datos o acciones sin autorización suficiente.
AGENTS.md permite guardar instrucciones persistentes para Codex, como arquitectura, comandos, reglas de seguridad, convenciones y verificaciones que deben aplicarse cada vez que el agente trabaja sobre el repositorio.
Sí. Una Skill puede encapsular workflows recurrentes como auditorías de seguridad, debugging, revisión de migraciones o preparación de releases para reutilizarlos entre proyectos.
Los Worktrees permiten que Codex realice una feature, corrección o experimento en un checkout Git independiente, sin mezclar esos cambios con el trabajo que tienes actualmente en tu carpeta principal.
Sí, si el proyecto dispone de tests o herramientas de verificación accesibles desde su entorno. Codex puede ejecutar comandos configurados en Composer, PHPUnit, PHPCS u otras herramientas utilizadas por el repositorio.
Sí. Las Automations pueden utilizarse para ejecutar revisiones periódicas, analizar cambios, detectar tests rotos, buscar problemas de seguridad o preparar propuestas de corrección. Para cambios automáticos conviene utilizar Git, permisos mínimos y worktrees aislados.
Mejores prompts para Codex: programación, debugging, tests y seguridad
Ya conoces las herramientas y workflows de Codex. El siguiente paso es aprender a escribir instrucciones que produzcan resultados más consistentes: prompts para entender repositorios, implementar features, encontrar bugs, revisar código, generar tests, trabajar con Git, WordPress y coordinar agentes especializados.
Ver mejores prompts para Codex →