Você exporta o banco de dados remoto com phpMyAdmin ou outra ferramenta e depois executa um search & replace no arquivo .sql? Isso é perda de tempo. 🤷♂️
Você pode exportar o banco de dados do ambiente de produção e importa-lo para sua instalação WordPress local executando apenas um comando no seu terminal.
Pré-requisitos
- Você precisa apenas da biblioteca WP-CLI instalada em seu computador. Se você não tem o WP-CLI instalado, siga as instruções sobre como instalar o WP-CLI.
- Você precisa “contar” pro WP-CLI onde está sua instalação WordPress remota. Isso é feito através de Aliases. Você vai aprender aqui como criar um Alias pro WP-CLI.
Como criar um Alias para o WP-CLI?
- Acesse a pasta que contém os arquivos da sua instalação WordPress local.
- Crie um arquivo de configuração do WP-CLI chamado wp-cli.local.yml.
- Adicione um Alias para a outra instalação WordPress de onde você quer pegar o banco de dados:
@prod:
ssh: [email protected]/var/www/html
- Faça as substituições necessárias no código acima:
- Substitua
USERNAME
pelo nome de usuário (sysuser) que tem acesso ao servidor remoto. - Substitua
000.000.000.000
pelo IP do servidor remoto. - Substitua
/var/www/html
pelo caminho da pasta que contém os arquivos da instalação WordPress remota.
- Substitua
Como exportar o banco de dados do servidor remoto e importa-lo para localhost?
- Ainda dentro da pasta que contém os arquivos da sua instalação WordPress local crie um arquivo chamado get-database-from-production.sh.
- Adicione dentro do arquivo o seguinte código:
_local_domain=localhost.website
_remote_domain=website.me
wp @prod db export database.sql --add-drop-table --skip-plugins --skip-themes
curl -o database.sql "https://${_remote_domain}/database.sql"
wp db import database.sql --skip-optimization --reconnect
wp search-replace "${_remote_domain}" "${_local_domain}" --all-tables --skip-themes --skip-plugins --skip-packages --report-changed-only
wp search-replace "https://localhost" "http://localhost" --all-tables --skip-themes --skip-plugins --skip-packages --report-changed-only
read -p "Quer alterar a senha do seu usuário (y/n)? " _update_password
if [ "${_update_password}" = "y" ]; then
read -p "Digite seu nome de usuário: " _username
read -p "Digite sua nova senha: " _password
wp user update "${_username}" --user_pass="${_password}"
fi
- Faça as substituições necessárias no código acima:
- Substitua
localhost.website
pelo domínio que você usa para acessar seu site localmente. - Substitua
website.me
pelo domínio que você usa para acessar seu site na internet.
- Substitua
- Agora, entenda o código acima:
- Primeiramente, é definida a variável
_local_domain
com o valorlocalhost.website
. - Depois é definida a variável
_remote_domain
com o valorwebsite.me
. - Em seguida, o comando
wp @prod db export
é executado. Note que é aqui que o Alias faz seu papel. Esse comando possui um Alias e por isso será executado numa instalação WordPress remota. Ele exporta o banco de dados remoto para um arquivo chamado database.sql. - Após a exportação do banco, o código usa a biblioteca
curl
para fazer o download do arquivodatabase.sql
. - Agora, uma vez que o arquivo .sql existe na sua máquina, o comando
wp db import
é usado para importar esse arquivo no banco de dados local (agora sem Alias). - Depois o código executa o comando
wp search-replace
e substitui o domínio remoto pelo domínio local. - E mais uma vez o comando
wp search-replace
é executado, mas para remover do banco de dados as URLs que têm https://. Se você usa sua URL local com https://, então, remova essa linha do código. - Por último, o terminal te pergunta se você quer alterar a senha do seu usuário. Digite y para prosseguir com a mudança. Depois digite seu nome de usuário, tecle Enter, digite a nova senha e tecle Enter novamente.
- Primeiramente, é definida a variável
- Execute o código abaixo no terminal (dentro da mesma pasta que contém o arquivo get-database-from-production.sh):
sh get-database-from-production.sh