Migrate WordPress to Custom PHP Without Losing SEO – BuiltToWinWeb
EN ES FR DE IT PT ZH JA KO RU NL
← Back to all articles
?>

Migre do WordPress para PHP personalizado sem perder SEO – O guia completo de 7 passos

Mudar do WordPress para uma base de código PHP personalizado pode reduzir o TTFB em 70%, eliminar vulnerabilidades de plugins e dar a você 100% de propriedade. Mas se você lidar mal com redirecionamentos e metadados, vai prejudicar seus rankings. Já migrei mais de 30 sites WordPress – aqui está o processo exato que preserva (e muitas vezes melhora) o SEO.

Por que migrar do WordPress para PHP personalizado?

  • Desempenho lento – Mesmo com cache, o WordPress carrega mais de 847KB de JavaScript.
  • Vulnerabilidades de plugins – 96% dos sites WordPress hackeados são devidos a plugins desatualizados.
  • Taxas mensais – Plugins premium, hospedagem otimizada para WP e manutenção se acumulam.
  • Dependência – Você não possui o código; você possui um banco de dados de posts e um tema.

PHP personalizado oferece controle total, tempos de carga abaixo de um segundo e zero taxas mensais de plataforma. Mas a migração deve ser impecável.

Antes de começar: A auditoria de pré‑migração

  • Exportar todas as URLs – Use Screaming Frog (gratuito até 500 URLs) ou wget: wget --spider --force-html -r -l 3 https://seudominio.com 2>&1 | grep '^--' | awk '{ print $3 }' > urls.txt
  • Registrar rankings – Exporte as 100 principais palavras-chave do Google Search Console (relatório de desempenho).
  • Salvar metadados – O Screaming Frog pode exportar tags de título, meta descrições e H1 como CSV.
  • Documentar backlinks – Use Search Console → Links → Links externos, ou Ahrefs/SEMrush se disponível.

Passo 1: Rastrear seu site antigo (Análise profunda com Screaming Frog)

Baixe o Screaming Frog SEO Spider (gratuito para até 500 URLs). Configure-o para extrair:

  1. Todas as URLs internas.
  2. Tags de título e meta descrições.
  3. Tags canônicas.
  4. Cabeçalhos H1.
  5. Códigos de resposta (200, 301, 404).

Exporte como CSV. Este arquivo se torna seu mapa de migração. Você o usará para verificar se cada página existente tem um destino.

Passo 2: Mapear URLs para a nova estrutura – Mantenha idêntico se possível

A abordagem mais segura: manter exatamente os mesmos caminhos de URL. Se suas URLs do WordPress são limpas (ex. /servicos/web-design), você pode reutilizá-las. Mude a estrutura apenas se:

  • Suas URLs do WordPress incluem /2023/01/nome-do-post/ (datas) – remova as datas.
  • Você tem conteúdo duplicado de arquivos /categoria/ e /tag/ – elimine esses.

Exemplo de mapeamento para um blog:

/2023/01/por-que-php-personalizado → /blog/por-que-php-personalizado
/categoria/desempenho → /blog/categoria/desempenho (opcional, você pode eliminar páginas de categoria)
/tag/seo → (eliminar – páginas de tag muitas vezes diluem a autoridade)

Crie um CSV com duas colunas: old_url, new_url. Para páginas que você não está recriando (ex. arquivos de tag), redirecione para a página relevante mais próxima.

Passo 3: Exportar conteúdo do WordPress

Método A – WP REST API (mais fácil para sites pequenos)

<code>&lt;?php<br>$posts = json_decode(file_get_contents('https://seudominio.com/wp-json/wp/v2/posts?per_page=100&page=1'));<br>foreach ($posts as $post) {<br>    $data = [<br>        'title' => $post->title->rendered,<br>        'slug' => $post->slug,<br>        'content' => $post->content->rendered,<br>        'excerpt' => $post->excerpt->rendered,<br>        'date' => $post->date,<br>        'meta' => [<br>            'title' => get_post_meta($post->id, '_yoast_wpseo_title', true),<br>            'description' => get_post_meta($post->id, '_yoast_wpseo_metadesc', true)<br>        ]<br>    ];<br>    // Inserir na tabela MySQL personalizada<br>}<br>?&gt;</code>

Método B – WP CLI (mais rápido para sites grandes)

<code>wp export --dir=/tmp --post_type=post,page --with_attachments</code>

Método C – MySQL direto (para controle total)

<code>SELECT ID, post_title, post_name, post_content, post_date FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page');</code>

Em seguida, busque os metadados Yoast SEO de wp_postmeta onde meta_key IN ('_yoast_wpseo_title','_yoast_wpseo_metadesc').

Passo 4: Reconstruir seu site PHP personalizado com os mesmos metadados

  • A mesma tag <title> exata (do Yoast ou All in One SEO).
  • A mesma <meta name="description">.
  • O mesmo <h1> (embora uma mudança pequena geralmente seja aceitável).

Armazene os metadados em seu banco de dados (ex. uma tabela page_meta) ou em um array PHP. Para sites dinâmicos, você pode até manter o banco de dados do WordPress como fonte somente leitura durante a transição – mas isso adiciona complexidade.

Passo 5: Implementar redirecionamentos 301 (O passo mais crítico)

Um redirecionamento 301 diz ao Google: “Esta página foi movida permanentemente.” O Google transfere quase 100% do poder de rankeamento da página antiga para a nova URL.

Para Apache (.htaccess) – Melhor para menos de 200 redirecionamentos

<code>Redirect 301 /url-antiga /url-nova<br>Redirect 301 /2023/01/por-que-php-personalizado /blog/por-que-php-personalizado</code>

Para milhares de redirecionamentos – Use um mapa PHP (evita inflar .htaccess)

<code>&lt;?php<br>$redirects = json_decode(file_get_contents(__DIR__ . '/redirects.json'), true);<br>$request = $_SERVER['REQUEST_URI'];<br>if (isset($redirects[$request])) {<br>    header('HTTP/1.1 301 Moved Permanently');<br>    header('Location: ' . $redirects[$request]);<br>    exit;<br>}<br>?&gt;</code>

Para Nginx – Use a diretiva map

<code>map $request_uri $new_uri {<br>    /url-antiga /url-nova;<br>    /2023/01/por-que-php-personalizado /blog/por-que-php-personalizado;<br>}<br>server {<br>    if ($new_uri) {<br>        return 301 $new_uri;<br>    }<br>}</code>

Dica profissional: Nunca encadeie redirecionamentos (A → B → C). Cada salto perde uma pequena quantidade de valor do link. Sempre redirecione diretamente A → C.

Passo 6: Gerar um sitemap XML dinâmico

Não use um sitemap estático – ele ficará desatualizado. Em vez disso, crie sitemap.php que gera XML dinamicamente:

<code>&lt;?php<br>header('Content-Type: application/xml');<br>echo '&lt;?xml version="1.0" encoding="UTF-8"?&gt;';<br>echo '&lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&gt;';<br>$pages = getAllPageUrlsFromDatabase(); // sua função personalizada<br>foreach ($pages as $url) {<br>    echo '&lt;url&gt;&lt;loc&gt;' . htmlspecialchars($url) . '&lt;/loc&gt;&lt;lastmod&gt;' . date('Y-m-d') . '&lt;/lastmod&gt;&lt;/url&gt;';<br>}<br>echo '&lt;/urlset&gt;';<br>?&gt;</code>

Em seguida, adicione uma regra de reescrita no .htaccess:

<code>RewriteRule ^sitemap\.xml$ sitemap.php [L]</code>

Envie o sitemap para o Google Search Console imediatamente após o lançamento.

Passo 7: Lançar e monitorar por 30 dias

  1. Verificar todos os redirecionamentos – Use um crawler (Screaming Frog) para visitar cada URL antiga e verificar se retorna um 301 para a nova URL.
  2. Monitorar diariamente o relatório “Cobertura” do Google Search Console – Procure erros 404. Para cada 404, adicione um redirecionamento ausente ou corrija o link quebrado.
  3. Enviar o novo sitemap – No Search Console, vá em Sitemaps → Adicionar um novo sitemap (sitemap.xml).
  4. Observar as Core Web Vitals – Dentro de uma semana, você deve ver melhora. Caso contrário, depure imagens, CSS ou a configuração do servidor.
  5. Comparar os rankings após 4 semanas – Exporte os dados do GSC novamente. A maioria dos clientes vê nenhuma mudança ou uma leve melhora devido a tempos de carregamento mais rápidos.

Armadilhas comuns e como evitá-las

Armadilha 1: Mudar URLs sem redirecionamentos

Sintoma: Erros 404 no Search Console.

Solução: Implemente o mapa PHP de redirecionamentos antes de lançar.

Armadilha 2: Esquecer de migrar as meta descrições

Sintoma: O Google reescreve seu snippet com texto aleatório.

Solução: Use a mesma exportação de metadados do Passo 1.

Armadilha 3: Perder imagens (arquivos de mídia)

Sintoma: Imagens quebradas no site personalizado.

Solução: Copie toda a pasta /wp-content/uploads/ para o diretório público do seu novo site. Configure um redirecionamento de /wp-content/uploads/... para /uploads/... se você moveu a pasta.

Armadilha 4: Avisos de conteúdo misto (imagens HTTP)

Sintoma: O navegador mostra “conteúdo não seguro” em HTTPS.

Solução: Pesquise e substitua URLs antigas de imagens em seu banco de dados de http://siteantigo.com para https://novo-site.com.

Caso de estudo real: Migração de um site empresarial de 500 páginas

Uma rede de franquias nacional tinha um site WordPress com mais de 500 páginas de localizações, cada uma com conteúdo único. O tempo de carregamento era de 2,8s (mobile), e eles pagavam $300/mês por hospedagem e plugins.

Processo:

  • Exportação de todos os dados de localização usando WP CLI.
  • Reconstrução de um site PHP personalizado com um único template PHP que puxava dados de localização do MySQL.
  • Manutenção da estrutura de URL idêntica (/localizacoes/cidade-estado/).
  • Uso de um mapa PHP para redirecionamentos 301 (embora as URLs não tenham mudado, eles mantiveram o mapa por segurança).

Resultados após 60 dias:

  • TTFB: 800ms → 180ms.
  • Desempenho Lighthouse: 58 → 96.
  • Custo de hospedagem: $300/mês → $30/mês (VPS padrão).
  • Rankings: Melhoraram para 87% das páginas de localização (devido à velocidade).
  • Tráfego orgânico: +23% em 3 meses.

O cliente agora possui o código completamente, não paga taxas de plugins e pode adicionar novas localizações instantaneamente através de um simples upload CSV.

Você deve migrar? Um quadro de decisão

Migre para PHP personalizado se:

  • Seu site é principalmente estático ou tem conteúdo previsível (blog + serviços).
  • Você está cansado da manutenção de plugins e atualizações de segurança.
  • Você quer 100% de propriedade do código e nenhuma taxa mensal de plataforma.

Continue no WordPress se:

  • Você precisa de e-commerce avançado (embora o PHP personalizado possa lidar com isso).
  • Você depende muito de extensões do WooCommerce.
  • Sua equipe não é técnica e está acostumada com o admin do WP.

Pronto para fazer a mudança?

Migrei mais de 30 sites WordPress para PHP personalizado – de pequenos blogs a lojas de e-commerce com 2.000 páginas. Cuido de tudo: exportação de conteúdo, mapeamento de URLs, redirecionamentos 301, preservação de metadados e monitoramento pós-lançamento.

Seu site PHP personalizado carregará em menos de 0,8s, alcançará 100 no Lighthouse e você nunca mais pagará taxas de plugins.

Deixe-me migrar seu site WordPress →

Todos os dados são de migrações reais de clientes realizadas pela BuiltToWinWeb. Os resultados individuais podem variar com base na complexidade e conteúdo do site.