# Como criar um child theme WordPress em 5 passos

O <strong>child theme</strong> é o tema-filho que herda tudo do tema pai e guarda suas personalizações em arquivo separado, sobrevivendo a qualquer atualização. Segundo o <a href="https://developer.wordpress.org/themes/advanced-topics/child-themes/" rel="noopener" target="_blank">WordPress Theme Handbook (2024)</a>, o functions.php do child não sobrescreve o do pai: os dois carregam, o child primeiro. Bastam dois arquivos, style.css e functions.php, para começar. Faça isso antes de tocar em uma linha de CSS do tema original.

Um child theme WordPress é um tema que herda o layout e as funções de um tema pai e armazena suas alterações em uma pasta própria. Você edita o child, não o tema original, e por isso a próxima atualização do tema pai não apaga nada do seu trabalho. No suporte da FULL, a gente vê que a perda de CSS após atualizar o tema é uma das causas mais frequentes de site que "voltou ao normal" sozinho. Este tutorial mostra como criar um child theme em cinco passos, com style.css, functions.php e o `wp_enqueue_style` correto. Para ver os temas certos para personalizar, comece pela categoria de <a href="https://full.services/temas-wordpress/">artigos de temas WordPress da FULL</a>.

---

## Primeiros passos: Visão geral do child theme

Criar um child theme exige só dois arquivos e cerca de 15 minutos: um `style.css` com o cabeçalho que aponta para o tema pai e um `functions.php` que carrega o estilo herdado. O child theme não copia o tema pai, ele aponta para ele, e por isso o peso final fica próximo de zero. A tabela abaixo resume cada arquivo e o que valida que ele está correto.

<table id="etapas-child-theme-wordpress">
  <caption>Child theme WordPress: arquivos, objetivo e check de validação</caption>
  <thead>
    <tr>
      <th scope="col">Arquivo / etapa</th>
      <th scope="col">Objetivo</th>
      <th scope="col">Check de validação</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Pasta do tema</th>
      <td>Isolar o child em wp-content/themes</td>
      <td>Nome em kebab-case, ex. astra-child</td>
    </tr>
    <tr>
      <th scope="row">style.css</th>
      <td>Declarar herança via campo Template</td>
      <td>Template = slug exato do tema pai</td>
    </tr>
    <tr>
      <th scope="row">functions.php</th>
      <td>Enfileirar o style.css herdado</td>
      <td>wp_enqueue_style no hook wp_enqueue_scripts</td>
    </tr>
    <tr>
      <th scope="row">Ativação</th>
      <td>Trocar o tema ativo pelo child</td>
      <td>Site idêntico ao pai após ativar</td>
    </tr>
    <tr>
      <th scope="row">Personalização</th>
      <td>Editar CSS e templates só no child</td>
      <td>Atualização do pai não apaga nada</td>
    </tr>
  </tbody>
</table>

Quatro ferramentas resolvem o trabalho: o Editor de Arquivos do WordPress, um cliente FTP como o Filezilla, o gerenciador de arquivos da hospedagem e o WP-CLI com `wp scaffold child-theme`. O resultado funciona com Astra, GeneratePress, Kadence ou qualquer tema clássico.

---

## Passo a passo: Como criar o child theme WordPress

Montar o child theme leva 5 passos e nenhum exige editar o tema pai. A regra de ouro vem do Theme Handbook oficial: o campo `Template` no style.css precisa ser "100% igual ao nome da pasta do tema pai". Errar esse campo é o motivo número um de tema quebrado no painel. Siga os passos na ordem.

### Passo 1: Crie a pasta do child theme

Crie uma pasta dentro de `wp-content/themes` com nome em kebab-case, por convenção o slug do tema pai mais o sufixo `-child` (ex. `astra-child`). Use o gerenciador de arquivos da hospedagem, FTP ou WP-CLI. A pasta vazia ainda não é um tema válido, ela só vira tema quando ganha o style.css do passo 2. Mantenha o nome em minúsculas e sem acento, porque o WordPress usa esse nome como identificador interno do tema.

<p class="wp-caption-text">Legenda: a pasta do child theme fica lado a lado com o tema pai, nunca dentro dele.</p>

### Passo 2: Escreva o style.css com o cabeçalho

Crie um `style.css` na pasta e abra-o com o cabeçalho de comentário que o WordPress lê para reconhecer o tema. O campo decisivo é o `Template`, que precisa bater exatamente com o nome da pasta do tema pai, relativo a `wp-content/themes`. Se o tema pai é o Astra, cuja pasta é `astra`, então `Template: astra`. Qualquer divergência aqui, até uma maiúscula, faz o WordPress não enxergar a herança e marcar o tema como quebrado.

```css
/*
Theme Name:  Astra Child
Template:    astra
Version:     1.0.0
*/
```

### Passo 3: Crie o functions.php e enfileire o estilo

Crie um `functions.php` na pasta do child e use `wp_enqueue_style` dentro do hook `wp_enqueue_scripts` para carregar o style.css herdado. O Theme Handbook é direto: o método ideal é o tema pai carregar os dois arquivos de estilo, e quando ele não faz isso sozinho, você enfileira o estilo do pai manualmente. Não copie funções inteiras do functions.php do tema pai: como os dois arquivos carregam juntos, nomes de função duplicados geram fatal error imediato.

```php
<?php
add_action( 'wp_enqueue_scripts', 'astra_child_enqueue' );
function astra_child_enqueue() {
    wp_enqueue_style( 'astra-child-style', get_stylesheet_uri() );
}
```

### Passo 4: Ative o child theme no painel

Vá em Aparência > Temas, encontre o child theme e clique em Ativar. Logo após ativar, o site deve ficar visualmente idêntico ao tema pai, porque o child ainda não tem nenhuma regra própria, só herda. Se o layout quebrar nesse momento, o problema quase sempre está no campo Template do passo 2 ou no enqueue do passo 3. Esse teste de "ficou igual?" é o seu sinal verde antes de personalizar qualquer coisa.

### Passo 5: Personalize só no child theme

Agora adicione seu CSS no style.css do child, abaixo do cabeçalho, e suas funções no functions.php do child. Para sobrescrever um template, copie só o arquivo específico do tema pai (ex. `header.php`) para a pasta do child e edite a cópia. A partir daqui, toda atualização do tema pai preserva integralmente o seu trabalho, que é exatamente o motivo de existir o child theme. Para ir além do básico, veja os <a href="https://full.services/recursos-para-aprender-a-criar-temas-para-wordpress/">recursos para aprender a criar temas WordPress</a>.

---

## Por que o child theme protege suas personalizações

O child theme protege seu CSS porque separa o que é seu do que é do desenvolvedor do tema, e a atualização só toca nos arquivos do tema pai. Quando você edita o style.css original pelo Editor de tema e o WordPress aplica a atualização automática, todo esse CSS é sobrescrito e perde-se na nova versão, sem aviso. Esse é o cenário clássico do site que "desconfigurou do nada".

Com a personalização morando no child theme, a versão nova do pai entra por baixo e o seu estilo continua por cima. A herança também vale para PHP, mas com uma regra que confunde: diferente dos templates, o `functions.php` do child não substitui o do pai. Os dois carregam, com o child antes do pai. Na prática, você nunca recria o functions.php inteiro, só adiciona funções no do child. Para ir a fundo, revise os <a href="https://full.services/glossario/hooks-wordpress/">hooks do WordPress</a> e o papel do <a href="https://full.services/glossario/functions-php/">functions.php</a> e do <a href="https://full.services/glossario/wp-enqueue/">wp_enqueue</a>.

---

## Quando o child theme não é a melhor escolha

O child theme nem sempre é a ferramenta certa, e em alguns cenários ele só adiciona manutenção. Em sites Elementor, onde quase todo o estilo vive no painel do builder, criar um child theme para três linhas de código vira peso morto. Aí vale mais usar o <a href="https://full.services/como-adicionar-css-personalizado-no-elementor-5-metodos-infaliveis/">CSS personalizado direto no Elementor</a>.

<ul class="arvore-decisao" style="margin-bottom:1.5rem">
  <li><strong>Se você vai mudar só cores e fontes</strong> → use o CSS adicional do Personalizar, sem criar arquivo.</li>
  <li><strong>Se você vai sobrescrever templates PHP</strong> → crie o child theme, é o único caminho seguro.</li>
  <li><strong>Se o site é todo montado no Elementor</strong> → evite o child só para CSS, use o painel do builder.</li>
  <li><strong>Se você adiciona snippets de PHP recorrentes</strong> → child theme ou plugin de snippets, o que isolar melhor o código.</li>
</ul>

Em temas FSE, parte da personalização migrou para o editor de blocos e o `theme.json`, o que reduz a necessidade do child para estilos simples. O child theme compete por segurança de atualização no código; o CSS do Personalizar compete por rapidez sem arquivo.

---

## Personalização com segurança: A alternativa FULL

Manter um child theme bem configurado em vários sites exige acompanhar atualizações de tema, versão de PHP e compatibilidade de plugins ao mesmo tempo. A FULL conecta mais de 150 mil sites WordPress e, nos tickets de suporte, a gente vê personalização perdida em atualização justamente em quem não usa child theme nem mantém ambiente de testes.

O plano PRO da FULL sai por R$849 e cobre até 10 sites, o que dá R$85 por site, com bundle de plugins premium como Astra PRO e Elementor PRO já incluídos para padronizar temas e personalizações em escala. Veja os <a href="https://full.services/planos">planos da FULL</a> para comparar as faixas e ativar o bundle.

---

## Boas práticas de personalização do child theme

Um child theme bem mantido segue quatro práticas que evitam a maioria dos problemas de tema: versionar o style.css, nunca duplicar funções do pai, sobrescrever só os templates necessários e testar antes de publicar. Cada uma corta um erro recorrente nos tickets de tema da FULL.

O versionamento começa pelo campo `Version` no cabeçalho do style.css, que força o navegador a recarregar o CSS quando você publica uma mudança, eliminando o clássico "atualizei mas não mudou nada". Em sites com Elementor, lembre que o builder já <a href="https://full.services/melhore-a-performance-do-elementor-com-wp-rocket-7-dicas-essenciais/">interfere na performance</a>: CSS duplicado entre child e builder sobrecarrega o render.

Para fontes, prefira enfileirar a fonte pelo functions.php do child em vez de colar `@import` no CSS, porque o `@import` bloqueia o render e atrasa o LCP. O guia de como <a href="https://full.services/adicionar-fontes-personalizadas-seu-site-wordpress/">adicionar fontes personalizadas no WordPress</a> mostra o caminho via enqueue. Se o seu tema base é o Astra, o <a href="https://full.services/astra-theme-review/">review do tema Astra</a> mostra o que já existe no painel e o que exige child theme.

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As recomendações deste tutorial foram validadas entre <time datetime="2026-01">janeiro</time> e <time datetime="2026-05">maio de 2026</time> em ambientes com WordPress 6.x, PHP 8.2 e os temas Astra, GeneratePress e Kadence, criando child themes via gerenciador de arquivos, FTP e WP-CLI. O comportamento do functions.php herdado e do campo Template foi cruzado com o WordPress Theme Handbook oficial. Os padrões de erro mais comuns vêm dos tickets de tema observados na base de mais de 150 mil sites conectados à FULL, sem números de proporção atribuídos, apenas a recorrência qualitativa observada no suporte ao longo do período de testes.</p>
</aside>

<aside aria-label="Resumo Tecnico">
<h2 id="resumo-tecnico">Resumo técnico</h2>
<ul style="margin-bottom:1.5rem">
  <li><strong>Melhor cenário:</strong> tema clássico bem construído como Astra ou GeneratePress, com CSS e templates PHP sob seu controle direto no child.</li>
  <li><strong>Pior cenário:</strong> site 100% Elementor onde o estilo vive todo no builder e o child theme acaba vazio, só somando manutenção sem ganho real.</li>
  <li><strong>Principal conflito:</strong> functions.php do child copiando funções do tema pai com o mesmo nome, o que gera fatal error imediato por declaração duplicada.</li>
  <li><strong>Melhor alternativa gratuita:</strong> o CSS adicional do Personalizar, quando a mudança é apenas visual, simples e não exige sobrescrever nenhum template.</li>
  <li><strong>Em uma frase:</strong> o child theme protege personalizações quando elas vivem em código versionado, não no painel de um builder.</li>
</ul>
</aside>

---

<h2 id="faq">Perguntas frequentes sobre child theme</h2>

<details>
<summary>Por que o child theme não sobrescreve o functions.php do tema pai?</summary>
<p>Porque o functions.php é exceção à regra de herança. Diferente dos templates, que o child substitui, os dois functions.php carregam juntos, com o child imediatamente antes do pai, segundo o Theme Handbook oficial. Por isso você só adiciona funções no do child e nunca copia o do pai inteiro: nomes de função repetidos geram fatal error na hora.</p>
</details>

<details>
<summary>É possível criar um child theme sem saber programar?</summary>
<p>Sim, é possível. Os dois arquivos básicos, style.css e functions.php, têm cerca de 8 linhas somadas e podem ser copiados de um modelo. Plugins como o Child Theme Configurator geram tudo automaticamente em 2 ou 3 cliques. Saber PHP só vira necessário quando você for sobrescrever templates ou criar funções próprias, o que é uma etapa posterior e opcional.</p>
</details>

<details>
<summary>Qual a diferença entre child theme e CSS adicional no Personalizar?</summary>
<p>O CSS adicional do Personalizar guarda regras visuais simples no banco de dados, sem criar arquivo, e é ideal para mudar cores e fontes em segundos. O child theme cria arquivos reais e é o único caminho para sobrescrever templates PHP e adicionar funções. Para mudança só visual, use o Personalizar; para alterar estrutura ou PHP, use o child theme.</p>
</details>

<details>
<summary>Quanto tempo leva para criar um child theme funcional?</summary>
<p>Em torno de 15 minutos para um child theme funcional do zero, somando a criação da pasta, o style.css com o campo Template e o functions.php com o wp_enqueue_style. Com WP-CLI e o comando wp scaffold child-theme, cai para menos de 2 minutos. O tempo extra vem só depois, quando você passa a personalizar templates e adicionar funções específicas.</p>
</details>

<details>
<summary>O que acontece com o child theme quando o tema pai é atualizado?</summary>
<p>O child theme continua intacto e o site não perde nenhuma personalização. A atualização toca apenas nos arquivos do tema pai, enquanto o seu CSS e suas funções vivem na pasta do child, que o WordPress não altera. Esse isolamento é exatamente o motivo de existir o child theme: receber correções e recursos novos do tema pai sem reescrever seu trabalho.</p>
</details>

## Próximos passos para personalizar seu tema com segurança

Criar um child theme WordPress é o primeiro passo para personalizar qualquer site sem medo da próxima atualização, e os cinco passos acima cobrem o caminho do zero ao tema ativo. A partir daqui, a evolução natural é dominar os templates que você pode sobrescrever e organizar o functions.php para escalar sem fatal error. Para continuar aprendendo, o <a href="https://full.services/academy/">FULL Academy</a> reúne tutoriais, guias e reviews de WordPress em um só lugar, do básico de temas à personalização avançada com builders e FSE.
