É possível apenas usando wp-cli para migrar uma instância multisite para um único site?

Levou-me um ótimo momento hoje para converter um site de https://example.com para https://sub.example2.com da instalação de WordPress multiste para a instalação normal do WordPress (leia: singlesite).

Desde que comecei a usar o wp-cli recentemente, pensei que seria possível fazê-lo apenas com wp-cli.

Usei o wp-cli para exportar um database. Como minha instância foi prefixada como: wp_9_

Usei o código como este:

 wp db export --tables="wp_users, wp_usermeta, wp_9_posts, wp_9_comments, wp_9_links, wp_9_options, wp_9_postmeta, wp_9_terms, wp_9_term_taxonomy, wp_9_term_relationships, wp_9_termmeta, wp_9_commentmeta" 

Enquanto eu descobri mais, eu deveria usar algo assim:

 wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix 'wp_9' --format=csv --allow-root) --allow-root 

Para aqueles que não estão usando o #

 wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix 'wp_9' --format=csv) 

Então eu configurei:

 define('WP_HOME','https://sub.example2.com'); define('WP_SITEURL','https://sub.example2.com'); 

Mas eu enfrentei o problema: posts, guids e meta não atualizados … Normalmente, eu nunca faço o próximo passo, já que ele funciona em vários casos.

Mas eu fui forçado a fazer o seguinte:

 UPDATE wp_posts SET post_content = replace(post_content, 'https://example.com', 'https://sub.example2.com'); UPDATE wp_posts SET guid = replace(guid, 'https://example.com', 'https://sub.example2.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://example.com', 'https://sub.example2.com'); 

Ainda mais, eu precisava atualizar o caminho de upload, no conteúdo do post e até mesmo no post_meta, já que em mulitsite o caminho de upload era /uploads/sites/9/ while em um único site apenas /uploads/ .

Isso também deve refletir nas postagens e postar meta como este:

 UPDATE wp_posts SET post_content = replace(post_content, '/uploads/sites/9/', '/uploads/'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'/uploads/sites/9/', '/uploads/'); 

Após esta etapa, copiei manualmente arquivos de / uploads / sites / 9 / pasta para a pasta / upload / upload da nova instância do WordPress no mesmo servidor usando o comando cp . Infelizmente, nem sequer pensei em wp-cli por isso.

Estou perguntando se é possível automatizar esses processos inteiramente usando wp-cli? Seria um grande ajudante da próxima vez.

Solutions Collecting From Web of "É possível apenas usando wp-cli para migrar uma instância multisite para um único site?"

Tente usar o 10up/MU-Migration : https://github.com/10up/MU-Migração

Se a sua instalação multi-site tiver apenas um pequeno número de subsites, talvez seja mais fácil usar as ferramentas de exportação e importação da área de administração.

Para cada site na instalação de vários sites, você pode baixar um arquivo de exportação que contém postagens de blog, páginas, usuários, comentários etc. Então você pode importar todos esses itens para o mesmo site. Pode ser mais fácil do que mexer com o database …

Em vez de fazer esses comandos do MySQL UPDATE você pode usar o comando wp search-replace WP wp search-replace WP-CLI.

Exemplo: wp search-replace 'https://example.com' 'https://sub.example2.com'

Esta é uma busca e substituição de serialização segura, então seu meta não será borked.

Mais informações em http://wp-cli.org/commands/search-replace/