Aprenda a migrar wordpress para https, usando o wp-cli, uma interface de linha de comandos para o wordpress.

O wp-cli usa um recurso chamado search-replace que procura no banco de dados por “http://” e substitui por “https://” com apenas uma linha de comando.

Em alternativa, coloquei como fazer a migração utilizando plugins ou phpmyadmin para alterar o bando de dados.

Fazer backup antes

Lembre-se de que sempre é importante fazer um backup do seu banco de dados antes de fazer mudanças significativas no site WordPress, para que você possa restaurar o site caso algo dê errado.

wp db export backup.sql

Comando do wp-cli

Execute o comando abaixo para fazer a busca e substituição do HTTP pelo HTTPS:

wp search-replace 'http://seusite.com' 'https://seusite.com' --skip-columns=guid

O parâmetro --skip-columns=guid é usado para evitar substituir valores na coluna “guid” do banco de dados, que é usada para gerar links permanentes (permalinks) para posts e páginas.

Exportar database com as mudanças:

wp search-replace 'http://seusite.com' 'https://seusite.com' --skip-columns=guid --export=database.sql

Ao adicionar --export=database.sql no final do comando acima, vai ser exportada uma base de dados nova com as mudanças, perfeita para fazer a migração de servidor.

Usar plugins em alternativa

Alguns plugins também fazem search and replace no banco de dados e funcionam para migrar para https:

Usar phpMyAdmin como alternativa

As mudanças do bando de dados podem ser feitas diretamente através de uma ferramenta como phpmyadmin ou adminer.

Esses são os endereços essenciais:

update wp_posts set guid = replace(guid,'http://seusite.com','https://seusite.com');

update wp_posts set post_content = replace(post_content,'http://seusite.com','https://seusite.com');

update wp_postmeta set meta_value = replace(meta_value,'http://seusite.com','https://seusite.com');

update wp_options set option_value = replace(option_value,'http://seusite.com','https://seusite.com');

Forçar redirecionamento

Além disso, após a migração para HTTPS, é importante configurar corretamente o certificado SSL e redirecionar todas as páginas HTTP para HTTPS para garantir a segurança e a integridade do seu site.

Adicione na header do wordpress o seguinte código:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Utilize o plugin Code Snippets e adicione esse código:

add_action('wp_head', 'upgrade-insecure-requests', 1);
function upgrade-insecure-requests() { ?>
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<?php }

Nginx:

server {
    listen 80;
    server_name seusite.com www.seusite.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name seusite.com www.seusite.com;
    root /var/www/seusite.com/htdocs;
    ssl_certificate        /etc/letsencrypt/live/seusite.com/fullchain.cer;
    ssl_certificate_key    /etc/letsencrypt/live/seusite.com/seusite.com.key;

    ...
    outras configurações
    ...

}

Apache:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Forçar SSL no wordpress wp-config.php:

/* SSL */
define( 'FORCE_SSL_LOGIN', true );
define( 'FORCE_SSL_ADMIN', true );

/* Custom WordPress URL. */
define( 'WP_SITEURL',     'https://seusite.com' );
define( 'WP_HOME',        'https://seusite.com' );

Como usar o WP-CLI

Comandos para instalar o WP-CLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Agora seu servidor pode executar o wp-cli em qualquer diretório, mas para utilizar o wp-cli é preciso estar dentro do diretório raiz do wordpress.