FSWP Theme Developer
Fundamental (sempre aplicado): fswp-developer/references/lean-coding.md (escreva menos, reutilize primeiro), fswp-developer/references/coding-standards.md (padrões de codificação, documentação, i18n, acessibilidade) e fswp-security-engineer (entrada, saída, autorização).
Executa um PRD de tema aprovado (fswp-architect). Um tema controla a apresentação. Funcionalidades que devem sobreviver a uma troca de tema (tipos de post, integrações, lógica de negócios) pertencem a um plugin (fswp-plugin-developer); diga isso em vez de escondê-las em functions.php.
Decida o tipo primeiro
| Tipo | Quando escolher | Arquivos principais |
|---|---|---|
| Tema em blocos | Quando se deseja edição pelo Site Editor; padrão para novos projetos | style.css (apenas cabeçalho), theme.json, templates/index.html, parts/, patterns/, styles/ |
| Tema clássico | Quando precisa de templates PHP e lógica personalizada por template, ou precisa dar suporte a WordPress antigo | style.css, index.php, functions.php, arquivos de template |
| Híbrido | Templates clássicos mais theme.json para configurações e estilos do editor | Arquivos clássicos + theme.json |
| Tema filho | Adaptar um tema pai sem bifurcá-lo | style.css com cabeçalho Template:, functions.php, apenas sobrescritas |
Por padrão, use um tema em blocos para novos projetos, a menos que o PRD exija o contrário. Temas em blocos precisam do WordPress 5.9 ou superior; verifique a versão atual do esquema theme.json e sua versão mínima do WordPress na documentação antes de definir Requires at least.
Fluxo de trabalho
- Scaffold:
python3 scripts/scaffold_theme.py --help, depois gere o esqueleto (blocos, clássico ou filho). Executefswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fixuma vez. - Tokens de design: defina paleta, tipografia, espaçamento, larguras de layout e predefinições de borda/sombra em
theme.json(blocos/híbrido) ou em propriedades personalizadas CSS (clássico). Use predefinições em templates e padrões em vez de valores fixos. - Templates: construa a hierarquia que o PRD necessita (página inicial, home, single, página, arquivo, pesquisa, 404, além de quaisquer templates personalizados). Reutilize partes de templates para cabeçalho, rodapé e seções repetidas.
- Padrões: registre layouts reutilizáveis como arquivos em
patterns/(cabeçalho com comentário: Title, Slug, Categories, Keywords opcionais, Viewport Width, Block Types). Sem imagens remotas. - Variações de estilo: arquivos JSON em
styles/para aparências alternativas; mantenha-os como pequenas sobrescritas detheme.json. - Blocos personalizados ou interatividade que o tema realmente precise:
fswp-block-developer. Caso contrário, prefira blocos principais. - Assets: enfileire com
wp_enqueue_scripts(clássico) outheme.json/add_editor_style(blocos); agrupe fontes localmente (entradasfontFace) com suas licenças; sem links de CDN. - Segurança, i18n, acessibilidade: escape toda saída, traduza toda string, atenda às regras de acessibilidade (
fswp-security-engineer,fswp-developer/references/coding-standards.md,references/theme-i18n-a11y.md). Use funções nomeadas e prefixadas para hooks (nunca closures), um prefixo de pelo menos quatro letras e sintaxearray()de acordo com os padrões de codificação. - Prontidão para diretório se o destino for o diretório de temas do WordPress.org:
fswp-release-manager(references/theme-requirements.md), depois executepython3 ../fswp-qa-engineer/scripts/theme_check.py <dir> --directory. Temas não podem conter tipos de post personalizados, blocos, shortcodes, funções, métodos de contato ou tipos MIME: isso pertence a um plugin. Nomes de temas não podem conter "WordPress", "Theme" ou "Twenty".
Pare e passe para fswp-qa-engineer.
Essenciais de tema clássico
add_theme_support() para title-tag e automatic-feed-links (ambos exigidos pelo diretório), além de post-thumbnails, html5, responsive-embeds, wp-block-styles e editor-styles; language_attributes(), body_class(), post_class(), wp_link_pages() e edit_theme_options para permissões de opções; register_nav_menus; wp_head(), wp_body_open(), wp_footer() presentes; get_template_part() para partes repetidas; tags de template em vez de consultas diretas; wp_reset_postdata() após loops secundários; largura de conteúdo e tamanhos de imagem declarados.
Temas filhos
Enfileire a folha de estilo do pai e a folha de estilo do filho com dependências corretas; sobrescreva templates individuais em vez de copiar o pai; mantenha a versão do filho independente da versão do pai; não copie o functions.php do pai.
Entrega
Arquivo {theme-slug}.zip instalável com a pasta do tema na raiz, readme.txt, screenshot.png (no máximo 1200x900, proporção 4:3), notas de licença para cada asset agrupado e um resumo das etapas manuais pendentes. Referências: references/block-theme.md, references/theme-i18n-a11y.md.