Files
gustavoo-me/README.md
T
Gustavo 0ea3651fb5 Automatic AI Posts, setup automatizado e seeder de permalinks/avatar
Plugin automatic-ai-posts (v2.0.0)
- Pipeline completo: coleta de feeds RSS/Atom, filtro por IA, reescrita,
  categoria, imagem de capa e agendamento
- Página de configuração com teste real do provedor de IA
- Editor: botão para refazer imagem de capa e metadados, textos em PT-BR
- Ajuda com botão Pix (copia-e-cola + QR) e sem nota de avaliação
- Cache-busting por mtime nos assets do admin

Tema gustavoo-portfolio
- Marca do cabeçalho reduzida a "Gustavo"
- Suporte a título próprio da marca

Setup (docker/wp-init.sh, compose.yaml)
- Plugins de terceiros (Post Views Counter, Rank Math, Site Kit)
  instalados do WordPress.org em vez de versionados
- Falha explícita ao final se algum plugin obrigatório não instalar
- WPCLI_UID/WPCLI_GID configuráveis

Seeder do tema
- Links permanentes "Dia e nome" e avatar "Iniciais" aplicados
  apenas em instalação nova, com regravação do .htaccess
2026-11-02 13:33:30 -03:00

6.9 KiB

Gustavo Portfolio — Tema WordPress

Tema WordPress clássico para o portfólio e blog de Gustavo Oliveira — gustavoo.me

Screenshot

Theme Screenshot

Sobre

Tema WordPress clássico desenvolvido para o portfólio pessoal e blog de Gustavo Oliveira, desenvolvedor Full Stack Sênior. O tema foi construído com foco em performance, acessibilidade e experiência do usuário, utilizando as melhores práticas do WordPress moderno.

Características

  • Tema Clássico — Template hierarchy tradicional do WordPress
  • Theme.json — Configuração completa de estilos via theme.json (cores, tipografia, espaçamento, bordas)
  • Blocos Nativos — Suporte completo a blocos do Gutenberg
  • Fluent Forms + FluentCRM — Integração nativa para formulários e newsletter
  • Portfólio de Projetos — CPT customizado para exibição de projetos
  • Newsletter Widget — Widget personalizado para FluentCRM
  • SEO Ready — Estrutura semântica e meta tags otimizadas
  • Performance — Assets otimizados, fontes variáveis (Inter Variable), lazy loading nativo

Stack

  • WordPress 6.5+
  • PHP 8.1+
  • Theme.json v3
  • Inter Variable Font (local, self-hosted)
  • Fluent Forms + FluentCRM (integração via plugin complementar)
  • Docker Compose para desenvolvimento local

Estrutura do Tema

gustavoo-portfolio/
├── assets/
│   └── fonts/          # Inter Variable Font (woff2)
├── inc/
│   ├── customizer.php  # Personalizador do tema
│   ├── defaults.php    # Configurações padrão (theme.json fallback)
│   ├── enqueue.php     # Assets e estilos
│   ├── forms.php       # Integração Fluent Forms
│   ├── setup.php       # Configuração do tema
│   ├── template-tags.php  # Template tags auxiliares
│   └── widgets.php     # Widget Newsletter (FluentCRM)
├── template-parts/     # Partes de template reutilizáveis
├── 404.php
├── archive.php
├── category.php
├── comments.php
├── footer.php
├── front-page.php      # Página inicial customizada
├── functions.php       # Bootstrap do tema
├── header.php
├── home.php
├── index.php
├── page.php
├── search.php
├── searchform.php
├── sidebar.php
├── single.php
├── screenshot.png      # Screenshot do tema (theme.png)
├── style.css           # Stylesheet principal (metadados do tema)
└── theme.json          # Configuração global de estilos

Plugin Complementar

O tema funciona em conjunto com o plugin Gustavo Portfolio Core (wp-content/plugins/gustavoo-portfolio-core), que provê:

  • CPT Projetos — Post type customizado para portfólio
  • Configurações Globais — Opções de hero, sobre, projetos, blog, contato, newsletter e redes sociais
  • Seeder — Criação automática de páginas, formulários Fluent Forms e feeds FluentCRM
  • Widget Newsletter — Widget para exibir formulário de newsletter no sidebar

Desenvolvimento Local

Pré-requisitos

O tema e plugin dependem dos seguintes plugins WordPress (instalados e ativados):

  • Fluent Forms — Formulários de contato e newsletter
  • FluentCRM — Automação de marketing e newsletter
# Criar o arquivo de variáveis de ambiente (obrigatório)
cp .env.example .env
# Edite o .env com suas credenciais (senhas do banco, porta, etc.)

# Subir ambiente Docker (instala e configura tudo automaticamente)
docker compose up -d

# Acompanhar a instalação
docker compose logs -f wpcli

# Acessar WordPress
# http://localhost:8080
# Usuário: admin | Senha: admin (definido no .env)

# Instalar dependências (plugins obrigatórios)
# 1. Acesse http://localhost:8080/wp-admin
# 2. Plugins → Adicionar novo → Busque e instale:
#    - Fluent Forms
#    - FluentCRM
# 3. Ative ambos os plugins

# Logs
docker compose logs -f wordpress

O que acontece a cada docker compose up

O serviço wpcli roda o docker/wp-init.sh e detecta o estado do banco:

Primeira execução (banco vazio) — instalação

  1. wp core install com URL/título/admin definidos no .env
  2. Pacote de idioma pt_BR
  3. Instala do WordPress.org os plugins de WP_EXTRA_PLUGINS (Post Views Counter, Rank Math SEO, Site Kit) — só se faltarem
  4. Ativa todos os plugins de wp-content/plugins/ e remove os que o WordPress traz (akismet, hello)
  5. Redis: constantes no wp-config.php, plugin, drop-in object-cache.php e verificação de conexão
  6. Configura o Post Views Counter: conta posts e páginas, posição Manual only
  7. Ativa o tema gustavoo-portfolio e remove os temas padrão
  8. Executa o seeder do plugin (páginas, formulários, feeds, permalinks, avatar)

Rank Math SEO e Site Kit são apenas instalados e ativados: o wizard e a conexão com o Google são feitos manualmente no painel.

Execuções seguintes (site já instalado) — atualização

  1. Nada é reinstalado e nenhum dado é apagado
  2. Atualiza o core e os plugins ativos que tiverem versão nova
  3. Ativa plugins novos adicionados à pasta wp-content/plugins/
  4. Reaplica só o que estiver faltando (idioma, Redis, tema, seeder idempotente)

A configuração do Post Views Counter roda uma única vez, na instalação. Se você mudar a posição no painel, ela não é sobrescrita nos próximos boots.

O seeder também aplica, apenas enquanto os valores ainda forem os de instalação nova:

Ajuste Valor aplicado
Links permanentes Dia e nome — /ano/mês/dia/slug/
Avatar padrão Iniciais

Depois de criar permalinks, o .htaccess do Apache é regravado na hora — sem isso as URLs novas dariam 404. Se você já tiver escolhido outro permalink ou avatar, sua escolha é mantida.

Tudo o que é do usuário fica em volumes, não no container:

Volume Conteúdo
db_data banco MariaDB — posts, páginas, usuários, opções, formulários
wordpress_data core, uploads, plugins e temas instalados
redis_data cache de objetos

docker compose down (sem -v) preserva tudo; só down -v recria do zero. Para pular atualizações numa reinicialização, use WP_SKIP_UPDATES=1 no .env.

Deploy

O tema está preparado para deploy em ambientes WordPress padrão (VPS, shared hosting, WP Engine, Kinsta, etc.).

  1. Faça o build dos assets se necessário
  2. Faça deploy da pasta wp-content/themes/gustavoo-portfolio/
  3. Ative o tema no painel WordPress
  4. Ative o plugin Gustavo Portfolio Core
  5. Execute o seeder (Configurações → Portfólio → "Executar Seeder") para criar páginas e formulários padrão

Licença

GNU General Public License v2 ou posterior — mesmo licença do WordPress.


Desenvolvido por Gustavo Oliveira — Desenvolvedor Full Stack Sênior