Desarrollar código para WordPress no es solo cuestión de que el programa «funcione», sino de que sea legible, seguro y compatible con el ecosistema global de la plataforma. Los WordPress Coding Standards (WPCS) son las reglas de etiqueta que permiten que miles de desarrolladores colaboren en el núcleo (core), temas y plugins sin que el código parezca un rompecabezas de diferentes estilos.
1. Estructura y Formato de PHP
El objetivo principal aquí es la legibilidad. WordPress prefiere un estilo «espaciado» en lugar de uno comprimido.
- Uso de espacios: Se deben incluir espacios después de las comas y a ambos lados de los operadores lógicos y de comparación.
- Bien:
if ( $foo == $bar ) - Mal:
if($foo==$bar)
- Bien:
- Indentación: WordPress exige el uso de tabs reales (no espacios) para el sangrado del código. Esto permite que cada desarrollador ajuste el ancho visual en su editor.
- Braces (Llaves): Las llaves siempre deben usarse, incluso en declaraciones de una sola línea, para evitar errores accidentales al añadir código después.
- Shorthand PHP: Está estrictamente prohibido el uso de etiquetas cortas (
<? ?>). Siempre se debe usar la etiqueta completa (<?php ?>).
2. Nomenclatura (Naming Conventions)
WordPress utiliza un estilo de escritura muy específico para evitar conflictos de nombres:
- Minúsculas y Guiones Bajos: Los nombres de variables, funciones y bases de datos deben estar en minúsculas. Las palabras se separan con guiones bajos (
snake_case).- Ejemplo:
$user_nameofunction get_user_data().
- Ejemplo:
- Clases: Para los nombres de las clases se usa
Capitalized_Words_With_Underscores(cada palabra empieza con mayúscula y se separa por guiones bajos). - Archivos: Deben ser descriptivos y en minúsculas, separados por guiones. Los archivos de clase deben empezar por
class-.- Ejemplo:
class-wp-widget-recent-posts.php.
- Ejemplo:
3. Seguridad: Sanitización y Validación
Este es quizás el punto más crítico de los estándares. WordPress sigue la regla de oro: «No confíes en nadie».
- Sanitización (Entrada): Limpiar los datos que entran al sistema.
sanitize_text_field()para texto plano.absint()para asegurar que un número sea un entero positivo.
- Validación: Verificar que los datos sean lo que se espera antes de procesarlos (ej. comprobar si un email tiene formato de email).
- Escapado (Salida): Antes de imprimir cualquier dato en el HTML, debe ser escapado para prevenir ataques XSS.
esc_html()para texto dentro de etiquetas.esc_attr()para atributos HTML.esc_url()para enlaces.
4. Documentación (Inline Documentation)
WordPress utiliza un formato basado en PHPDoc. Cada función, clase, método o variable debe estar documentada para que otros desarrolladores (o tú mismo en el futuro) entiendan qué hace el código.
- Bloques de resumen: Una línea breve que explique la función.
- Etiquetas
@param: Describen el tipo y propósito de los argumentos. - Etiqueta
@return: Describe qué devuelve la función. - Etiqueta
@since: Indica en qué versión de tu proyecto se añadió ese código.
5. SQL y Base de Datos
Para interactuar con la base de datos, los estándares dictan:
- Uso de
$wpdb: Nunca uses funciones nativas de PHP comomysqli_query(). Usa siempre la clase global$wpdb. - Consultas Preparadas: Para evitar inyecciones SQL, todas las consultas que incluyan variables deben usar
$wpdb->prepare().