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)
  • 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_name o function get_user_data().
  • 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.

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 como mysqli_query(). Usa siempre la clase global $wpdb.
  • Consultas Preparadas: Para evitar inyecciones SQL, todas las consultas que incluyan variables deben usar $wpdb->prepare().