FSWP Theme Developer
Fundacional (siempre aplicado): fswp-developer/references/lean-coding.md (escribe menos, reutiliza primero), fswp-developer/references/coding-standards.md (estándares de codificación, documentación, i18n, accesibilidad) y fswp-security-engineer (entrada, salida, autorización).
Ejecuta un PRD de tema aprobado (fswp-architect). Un tema controla la presentación. Las funcionalidades que deben sobrevivir a un cambio de tema (tipos de contenido, integraciones, lógica de negocio) pertenecen a un plugin (fswp-plugin-developer); díselo en lugar de ocultarlas en functions.php.
Decide el tipo primero
| Tipo | Cuándo elegirlo | Archivos principales |
|---|---|---|
| Tema de bloques | Se desea edición con el Editor del Sitio; nuevas construcciones por defecto | style.css (solo cabecera), theme.json, templates/index.html, parts/, patterns/, styles/ |
| Tema clásico | Necesita plantillas PHP y lógica personalizada por plantilla, o debe soportar WordPress antiguo | style.css, index.php, functions.php, archivos de plantilla |
| Híbrido | Plantillas clásicas más theme.json para configuraciones y estilos del editor | Archivos clásicos + theme.json |
| Tema hijo | Ajustar un tema padre sin bifurcarlo | style.css con cabecera Template:, functions.php, solo sobrescrituras |
Por defecto, elige un tema de bloques para nuevas construcciones a menos que el PRD requiera otra cosa. Los temas de bloques necesitan WordPress 5.9 o superior; verifica la versión actual del esquema de theme.json y su versión mínima de WordPress en la documentación antes de fijar Requires at least.
Flujo de trabajo
- Andamiaje:
python3 scripts/scaffold_theme.py --help, luego genera el esqueleto (bloques, clásico o hijo). Ejecutafswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fixuna vez. - Tokens de diseño: define paleta, tipografía, espaciado, anchos de diseño y ajustes preestablecidos de borde/sombra en
theme.json(bloques/híbrido) o en propiedades personalizadas CSS (clásico). Usa ajustes preestablecidos en plantillas y patrones en lugar de valores fijos. - Plantillas: construye la jerarquía que el PRD necesite (portada, inicio, entrada individual, página, archivo, búsqueda, 404, más cualquier plantilla personalizada). Reutiliza partes de plantilla para encabezado, pie y secciones repetidas.
- Patrones: registra diseños reutilizables como archivos en
patterns/(comentario de cabecera: Title, Slug, Categories, Keywords opcional, Viewport Width, Block Types). Sin imágenes remotas. - Variaciones de estilo: archivos JSON en
styles/para aspectos alternativos; mantenlos como pequeñas sobrescrituras detheme.json. - Bloques personalizados o interactividad que el tema realmente necesite:
fswp-block-developer. De lo contrario, prefiere bloques principales. - Activos: encola con
wp_enqueue_scripts(clásico) o mediantetheme.json/add_editor_style(bloques); agrupa fuentes localmente (entradasfontFace) con sus licencias; sin enlaces CDN. - Seguridad, i18n, accesibilidad: escapa cada salida, traduce cada cadena, cumple las reglas de accesibilidad (
fswp-security-engineer,fswp-developer/references/coding-standards.md,references/theme-i18n-a11y.md). Usa funciones con nombre y prefijo para los hooks (nunca closures), un prefijo de al menos cuatro letras, y sintaxisarray()según los estándares de codificación. - Preparación para el directorio si el destino es el directorio de temas de WordPress.org:
fswp-release-manager(references/theme-requirements.md), luego ejecutapython3 ../fswp-qa-engineer/scripts/theme_check.py <dir> --directory. Los temas no pueden contener tipos de contenido personalizados, bloques, shortcodes, roles, métodos de contacto o tipos MIME: eso pertenece a un plugin. Los nombres de temas no pueden contener "WordPress", "Theme" ni "Twenty".
Detente y pasa a fswp-qa-engineer.
Esenciales de tema clásico
add_theme_support() para title-tag y automatic-feed-links (ambos requeridos por el directorio), además de post-thumbnails, html5, responsive-embeds, wp-block-styles y editor-styles; language_attributes(), body_class(), post_class(), wp_link_pages() y edit_theme_options para permisos de opciones; register_nav_menus; wp_head(), wp_body_open(), wp_footer() presentes; get_template_part() para partes repetidas; etiquetas de plantilla en lugar de consultas directas; wp_reset_postdata() después de bucles secundarios; ancho de contenido y tamaños de imagen declarados.
Temas hijo
Encola la hoja de estilos del padre y la del hijo con dependencias correctas; sobrescribe plantillas individuales en lugar de copiar el padre; mantén la versión del hijo independiente de la del padre; no copies el functions.php del padre.
Entrega
{theme-slug}.zip instalable con la carpeta del tema en la raíz, readme.txt, screenshot.png (como máximo 1200x900, relación 4:3), notas de licencia para cada activo empaquetado y un resumen de los pasos manuales pendientes. Referencias: references/block-theme.md, references/theme-i18n-a11y.md.