Que consulta SQL para fazer um simples localizar e substituir

18

Sempre que eu criar um novo site, primeiro criei um site de teste em um subdomínio como "stage.domain-name.com".

Depois que tudo funcionar corretamente eu exporte o banco de dados, abra-o no notepad ++ e faça um find / replace para "subdomain.domain-name.com" e substitua por "domain-name.com" ... finalmente eu o importo em um novo banco de dados para o site ao vivo.

Minha pergunta é ... qual consulta SQL eu precisaria executar se eu apenas quisesse fazer este simples find / replace em todo o banco de dados usando o phpmyadmin?

-CH

    
por NetConstructor.com 25.01.2011 / 12:09

7 respostas

13

A tabela em que seu URL está salvo é wp_options. Você deve fazer uma atualização nas colunas que usam o URL do seu site:

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home"

Eu posso estar perdendo algum valor, mas sempre que você fizer isso, encontre / substitua o processo novamente, você pode notar os valores e tabelas que devem ser atualizados e adicioná-los a este script.

O WordPress Codex tem um guia interessante sobre como alterar um URL de site, talvez seja ainda mais útil para você: Alterando o URL do site

    
por Fernando Briano 25.01.2011 / 12:25
26

Melhor fazer opções, postar, postar conteúdo e postar meta:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

Veja também Pesquisando dados usando phpMyAdmin e MySQL | Packt Publishing. E Search RegEx é um bom plugin WP para poder pesquisar e substituir com Grep através de todas as mensagens e páginas.

Atualização em 16/06/2015: Usar a ferramenta vinculada na próxima sentença é muito melhor, pois um simples localizar / substituir como em um dump de banco de dados irá quebrar dados serializados. Veja interconnectit.com WordPress Serializado PHP Search Replace Tool. Desta forma, você não divide os dados serializados e não precisa executar o RegEx no conteúdo da postagem, pois o script de interconexão altera os URLs em todos os lugares. Eu uso essa ferramenta o tempo todo para migrar sites para diferentes domínios, ou simplesmente fazer uma mudança global de http para https para forçar o SSL sem plug-ins e alterar todas as URLs no conteúdo para evitar erros de elementos inseguros.

    
por markratledge 25.01.2011 / 15:02
9

Este é um excelente script drop-in que eu uso e funciona lindamente com os arrays serializados que o WP usa para armazenar opções. Apenas certifique-se de excluí-lo do seu servidor remoto quando terminar, pois é um grande risco à segurança.

enlace

    
por lancemonotone 02.08.2011 / 21:47
3

você não precisa fazer isso, você pode usar caminhos relativos.

quando você está ligando algo em vez de subdomain.soemthing.com/image.jpg - use /image.jpg por exemplo

assim você não vai enfrentar o problema em primeiro lugar.

caso contrário, para uma instrução de atualização do mysql, você pode usar

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
    
por mireille raad 25.01.2011 / 12:45
3

Para isso eu uso WP-CLI porque eu acho mais fácil e cuido de dados serializados .

wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid

Há também uma opção que grava suas alterações em um arquivo SQL em vez de manipular o banco de dados real:

wp search-replace foo bar --export=database.sql

    
por Jan Beck 27.04.2016 / 10:41
2

Para alterar o domínio wordpress, o que normalmente precisamos é tornar o site dinâmico a partir do host local: Esta é uma lista completa de consultas de atualização:

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

/*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
  • Também precisamos adicionar outras tabelas que não sejam padrão com o WP, se necessário.

ATUALIZAÇÃO: pesquisa substituir DB versão 3.1 .0 é uma ferramenta de front-end fácil de usar para desenvolvedores, que permite realizar ações de busca / substituição de banco de dados, que não danificam seqüências de caracteres ou objetos serializados do PHP.

    
por Reza Mamun 24.11.2011 / 17:09
-1

Na verdade, você não precisa usar uma consulta SQL apenas alguns ajustes no arquivo wp_config e functions.php no seu tema. Confira este tópico no Wordpress Codex: enlace

    
por GI_MED 06.05.2015 / 13:10