Stack técnico completo

para sites WordPress de alto desempenho.

Documentação técnica integral de uma arquitetura WordPress + Elementor com captura de leads anti-bot, SEO técnico avançado, cache multi-camada, identidade visual coesa e operação observável. Implementação 100% inline, sem assinatura comercial — pronta para ser replicada em qualquer projeto.

Infra observável

nginx + PHP-FPM + MySQL + Redis · systemd timers · backups antes de cada mudança · idempotência em todo script

Performance real

Cache Redis 3-níveis · Gzip · preload fonts · defer JS · TTFB -85% em cache quente · Brotli compilado em standby (ver §11 gotcha)

Captura segura

REST API · 10 camadas anti-bot · honeypots · time-trap · rate limit estratificado · logger de bloqueios

Como as camadas se relacionam.

[Cliente] │ HTTPS · Gzip negociado (Brotli compilado mas off · ver §11 gotcha) ▼ [nginx 1.18] │ ├─ HTTP/2 · TLS · cache headers │ ├─ Gzip compress on (Brotli em standby · módulos .so disponíveis) │ ├─ rewrite → index.php se não-asset │ └─ proxy → php-fpm 8.1 via unix socket ▼ [PHP-FPM 8.1] │ ├─ WordPress core │ ├─ Elementor + Elementor Pro │ ├─ W3 Total Cache → page cache em Redis db2 │ ├─ MU-plugins ativos: │ │ ├─ site-seo-meta (Schema @graph · OG · Twitter · canonical) │ │ ├─ site-seo-schema (Service/Product/FAQPage por página) │ │ ├─ site-performance (preload fonts · defer JS · remove bloat) │ │ └─ site-lp-forms (REST API · anti-bot 10 camadas · email duplo) │ ├─ wp_mail() → WP Mail SMTP → Locaweb SMTP (transactional) │ └─ wp-cron + systemd timers ▼ [Redis 6379] [MySQL] [Filesystem] ├─ db0 objects ├─ wp_* ├─ /wp-content/{site}-leads/*.jsonl (PII) ├─ db1 dbcache └─ leads PII ├─ /usr/local/share/{site}-builders/*.php └─ db2 pgcache ├─ /usr/local/bin/*.sh (watchdogs) └─ /usr/local/share/{site}-backups/* (snapshots)

Camada base · servidor + cache + mailer.

nginx 1.18 + gzip (Brotli em standby)

Web server com gzip ativo. Brotli compilado como módulo dinâmico contra google/ngx_brotli mas DESABILITADO por padrão — conflito de double-compression com W3TC documentado em §11.
# Brotli em STANDBY — ativar SOMENTE após resolver double-compression.
# Pré-requisito: desabilitar W3TC browsercache.html.compression
# (senão gera response com 2 Content-Encoding e quebra navegador)
#
# Quando seguro, descomentar:
# load_module modules/ngx_http_brotli_filter_module.so;
# load_module modules/ngx_http_brotli_static_module.so;
# brotli on; brotli_static on; brotli_comp_level 6;
# brotli_min_length 256;
# brotli_types text/plain text/css application/javascript
#   application/json image/svg+xml font/woff2;

PHP-FPM 8.1 + Redis ext

Pool PHP com php-redis extension para que WordPress fale com Redis diretamente.

Redis 7 · 3 bancos lógicos

Cache em RAM com 3 dbs separados para isolamento de escopo.

MySQL/MariaDB + Locaweb SMTP

Persistência relacional + relay de email autenticado para entrega comercial.

CMS + page builder ajustados para performance.

WordPress 7+ ajustado

Core enxuto com bloat removido pela MU-plugin de performance.

Elementor + Elementor Pro

Page builder com config de cache otimizada.
// Sempre setar _inline_size numérico (não null)
function eCol($size, $widgets) {
    return [
        'elType' => 'column',
        'settings' => [
            '_inline_size' => (float)$size,
            '_inline_size_tablet' => 100,
            '_inline_size_mobile' => 100,
        ],
        'elements' => $widgets,
    ];
}

Cinco camadas independentes de cache.

Cada uma protege contra falha das outras. Cache hit em qualquer camada significa response rápido.
#CamadaTecnologiaEscopo
1Browser cachenginx Cache-Control: max-age=31536000CSS, JS, imagens, fontes (1 ano)
2CompressãoGzip (W3TC pré-gera) · Brotli compilado mas offHTML/CSS/JS ~25% menos bytes
3Page cache (W3TC)Redis db2 (HTML em RAM)Páginas anônimas servidas em <100ms
4DB cache (W3TC)Redis db1 (queries SQL repetidas)SELECTs idênticos não tocam MySQL
5Object cache (W3TC)Redis db0 (objects + transients WP)get_post(), options, hooks
6Minify (W3TC)CSS + JS + HTML minify (file engine)~25% menos bytes por asset
7Lazy load nativoW3TC + Elementor loading=lazyImagens fora do viewport defer
8CSS inline (Elementor)elementor_css_print_method=internalImune a flushes de cache de plugin

Quatro plugins isolados · separation of concerns.

Cada MU-plugin tem responsabilidade única. Fácil debugar, ativar/desativar individualmente, sem dependências cruzadas.

SEO Engine v2 · meta description + Schema base

Injeta meta description (custom ou fallback do conteúdo), canonical, OG, Twitter Cards, JSON-LD @graph com WebSite + Organization + WebPage + BreadcrumbList.

SEO Schema Extender · Service/Product/FAQ

Estende o SEO Engine com Schema.org específico por página + FAQ auto-extracted de accordion Elementor.

Performance Engine · preload + defer + remove bloat

Reduz render-blocking + tempo de execução de JS sem dependência de plugins.

LP Forms v1.6 · captura + anti-bot + email duplo

Sistema completo de formulários custom substituindo plugins externos abandonados.

Dez camadas de defesa.

Cada camada é independente. Bot precisa passar por todas para submeter — humano legítimo passa por todas sem fricção visível.
#CamadaDetectaReação
1Honeypots múltiplos3 campos invisíveis (hp_field · website · confirm_email)hp_field: 200 OK silencioso · outros: 403
2Time-trap_render_ts: submit em <3s ou form >24h velho403 + strike
3JS-required token_js_ready formato regex 1:<ts36>:<rand>403 + strike
4User-Agent filterBlocklist 19 patterns (curl, wget, python-requests, bot, spider)403 + strike
5Referer/Origin lockdownhost(Referer) ≠ próprio domínio403 + strike
6Payload size limitTotal params >5KB403 + strike
7Rate limit nível 1≥2 submits/minuto por IP429
8Rate limit níveis 2+3>5/hora · >20/dia por IP429
9Strike + blocklist3 violações em 24h → IP bloqueado 24h429 por 24h
10Semantic checksURL no nome · email descartável (15 domínios) · telefone <10 dígitos · endereço sem número422 + mensagem amigável
Logger de bloqueios: tentativas falhas registradas em /wp-content/{site}-leads/blocked-YYYY-MM.jsonl com IP, UA, Referer, reason e payload size. Permite análise de padrões de ataque sem poluir leads válidos.

Cobertura completa · Google + AI search.

Meta tags + Open Graph

Cobertura 100% das páginas publicadas.

JSON-LD Schema.org @graph

Rich results no Google SERP + ingestão correta por AI search.

AI search engines · llms.txt + robots.txt

Pioneirismo em SEO para IA generativa.

Sitemap + crawling

Indexação acelerada por crawlers.

Sistema de design tokens.

Paleta de design tokens

Definida como const PHP nos builders, herdada por todos os componentes.

Tipografia responsiva automática

Helper _respSize() escala desktop→tablet→mobile proporcional.

Padding/spacing responsivo

Helper tPad() reduz padding vertical em mobile (110px → 56px).

Componentes reutilizáveis

Funções PHP que retornam blocos Elementor consistentes.

Watchdog · backup · idempotência.

Persistência após reboot

Nada importante em /tmp (limpa no boot por systemd-tmpfiles).

Watchdog + recovery automático

Detecta perda de CSS inline e regenera.

Backups antes de cada mudança

Rollback rápido se algo quebrar.

Validação em cada step

Falha fast, não chega em produção quebrado.

Second Brain integrado.

Vault Obsidian (PARA mode)

Knowledge base local com estrutura organizacional padrão.

Graphify · grafo de conhecimento

Busca semântica BFS sobre o vault, ~71× mais token-econômica que Grep/Glob.

Auto-archive de transcripts

JSONL bruto → markdown legível agrupado por sessionId.

Princípios que guiam toda decisão.

Não quebrar nada

Backup antes de cada mudança. nginx -t antes de reload. Rollback automático em falha. Mudanças incrementais validadas a cada step.

Source of truth local

Lead salvo no JSONL antes de tentar enviar email. Email é notificação, não armazenamento. Nunca depender de serviço externo para integridade.

Idempotência total

Scripts podem rodar 1× ou 100× — efeito é o mesmo. Marker meta + check de existência. Rebuild seguro a qualquer momento.

Separation of concerns

MU-plugins isolados por responsabilidade. SEO meta ≠ SEO schema ≠ Performance ≠ Forms. Fácil ativar/desativar individualmente.

Persistência consciente

Nada importante em /tmp. /usr/local/bin para scripts, /usr/local/share para dados, /var/log para logs. systemd services enabled.

Validação contínua

php -l, nginx -t, curl HTTP code, JSON parse, Lighthouse delta, screenshot diff. Falha fast, não chega quebrado em produção.

Documentação obrigatória

Session log + memory persistente + project note + Graphify reindex em cada interação substantiva. Próxima sessão pega contexto cold-start.

Design não é negociável

Plus Jakarta Sans + paleta tokens + tipografia responsiva automática + heading peso 700 + contraste WCAG AA. Forms e popups com mesma qualidade visual das páginas.

Anti-fragilidade

Watchdog regenera CSS perdido. Cron + systemd timer redundantes. JSONL acumula mesmo se email falhar. Cache em camadas independentes.

Erros que custam horas se você não souber.

Catálogo de armadilhas técnicas descobertas durante a implementação. Cada uma é uma falha silenciosa que parece estar funcionando mas não está.

Ganho real mensurado.

MétricaAntesDepoisGanho
TTFB (cache quente)8.7s1.3s-85%
HTML transferido330KB32KB-90%
HTML transferido (gzip)~330KB raw~48KB gzip-85%
Lighthouse SEO8592+7
pa11y violações WCAG (controláveis)90-100%
Plugins ativos (superfície de ataque)2015-25%
Bots bloqueados em bateria de teste0/88/8100%
Cobertura WebP em imagens publicadas94%100%+6pp
Cobertura meta description53%100%+47pp
Cobertura Schema.org Service/FAQ09 páginas+9
Load time percebido pelo usuário (rede normal): ~8-12s → ~3-4s (-60% a -70%).

Esta arquitetura é replicável.

Use como blueprint.

Stack 100% inline · sem dependência de plugins comerciais · sem CDN externo · sem CAPTCHA visual · sem custos recorrentes além de hosting + SMTP. Todos os MU-plugins, builders, scripts e configs podem ser portados para qualquer site WordPress + Elementor mantendo a mesma qualidade.