Pagina inicial » WordPress » Mass encontrar e substituir bancos de dados WordPress - The Easy Way

    Mass encontrar e substituir bancos de dados WordPress - The Easy Way

    Existem várias ocasiões em que temos que mudar URLs no nosso banco de dados do site WordPress. Por exemplo, precisamos fazer isso depois de migrar um banco de dados do WordPress de um site, por exemplo, de http://acme.com local de produção remota, ao http://acme.dev site de desenvolvimento local no nosso computador.

    O WordPress.org hospeda um grande número de plugins, como o WP DBManager e o WP Migrate DB, e há também várias ferramentas de terceiros que permitem que você banco de dados de importação facilmente. A parte complicada é ter que alterar cada instância de URL dentro do banco de dados.

    Depois de migrar o banco de dados, os URLs dentro dele ainda apontam para o site antigo, neste caso para acme.com. Você pode encontrar o URL antigo no wp_options tabela, definida como o valor do URL do site e casa opções, e é provavelmente também incorporado em várias outras linhas e tabelas no banco de dados. Esses URLs antigos podem impedir que seu site seja executado corretamente. Por isso, é necessário altere-os para o novo URL, no nosso exemplo para acme.dev.

    IMAGEM: Sequel Pro, pesquisando o valor do banco de dados

    Neste ponto, acessando nosso site de desenvolvimento em acme.dev vai simplesmente levar para uma página em branco.

    Então, como vamos mudar todos esses URLs no banco de dados?

    Executando uma Consulta SQL

    Normalmente, as pessoas executam a seguinte consulta SQL que substitui os valores do URL do site e casa opções no wp_options mesa.

     UPDATE wp_options SET option_value = substituir (option_value, 'http://acme.com', 'http://acme.dev') WHERE nome_da_opção = 'home' OU nome_da_opção = 'siteurl'; 

    Posteriormente, eles usam outra consulta SQL para substituir todas as ocorrências de URL no wp_posts mesa, nomeadamente no Publicar conteúdo coluna de cada linha.

     UPDATE wp_posts SET post_content = substituir (post_content, 'http://acme.com', 'http://acme.dev'); 

    A execução dessas consultas é uma solução viável e, ao mesmo tempo, não é conveniente fazer isso. Pode até ser estressante ver como o banco de dados pode se tornar confuso devido a um simples descuido dentro da consulta..

    Aproveitando o WP-CLI

    Outra rota que podemos fazer, e que eu achei ser uma alternativa mais útil, é por aproveitando a linha de comando do WP-CLI. Isso significa que você precisará ter o WP-CLI instalado.

    Supondo que você tenha instalado o WP-CLI e tenha o wp comando acessível como o alias, navegue até o diretório onde residem os arquivos do site do WordPress.

    Em seguida, execute o seguinte comando:

    wp search-replace 'http://acme.com "http://acme.dev

    O primeiro parâmetro, 'http://acme.com', é a velha entrada a ser substituída pela segunda, 'http://acme.dev'.

    A linha de comando pesquisará todas as tabelas dentro do banco de dados, não só o Publicar conteúdo coluna e wp_options mesa e substituir cada instância da entrada passou pelos parâmetros do comando.

    Como você pode ver na imagem acima, um total de 225 substituições foram feitas. E nós fizemos isso através de uma simples linha de comando.

    Eu acho que vale a pena mencionar que podemos usar o wp search-replace comando, não apenas para substituir URLs, mas qualquer valor armazenado no banco de dados também. Também podemos limitar a operação em uma determinada tabela, passando o nome da tabela como quarto parâmetro, da seguinte maneira:

    wp search-replace '.jpg ".webp' wp_posts

    Executando o comando acima, ele só pesquisará wp_posts, a tabela que armazena nosso conteúdo - postagens, páginas etc. - e substitua a extensão de imagem de .jpg para .webp.

    O WP-CLI faz com que uma operação SQL emaranhada pareça mais intuitiva, e você pode trabalhar com ela de uma maneira mais conveniente. Se você quiser ajustar seus comandos, dê uma olhada na documentação do WP-CLI, que fornece uma lista de opções para executar uma operação mais avançada com o wp search-replacecomando.