Converter uma instalação do WordPress Multisite em um site único

15

Considerando uma rede WordPress Multisite, com um blog principal, e supondo que todo o conteúdo foi movido para aquele blog, como um colapso da rede em uma instalação padrão não-multi-site do WordPress?

    
por Tom J Nowell 08.08.2011 / 15:14

5 respostas

15

Já passei pelas etapas para extrair um site de uma instalação multisite para uma única instância agora:

  1. Configure uma cópia limpa do WP, mas não instale-a
  2. Encontrar o ID do site
  3. Copie os arquivos de blogs.dir / ID / files para a nova pasta de uploads do WP
  4. Copie o tema que o site usa e os plugins usados nas pastas apropriadas na nova pasta wp-content
  5. Faça um backup do banco de dados multisite, mas apenas as tabelas para o site de destino e as tabelas users e usermeta usando o ambiente de trabalho do MySQL ou equivalente
  6. Restaure o backup para um novo banco de dados e altere os prefixos do nome da tabela para que sejam todos iguais, por exemplo. 'wp_SITEID_' para 'wp _'
  7. Usar o ambiente de trabalho do MySQL ou o navegador de consulta organiza as tabelas users e usermeta da seguinte forma:
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  8. Comece o processo de instalação do WP para criar um wp-config.php , mas não clique em "Executar a instalação"
  9. Crie um arquivo .htaccess padrão se os permalinks estiverem em uso ou apenas visite a página de permalinks em wp-admin
  10. Você precisará atualizar os URLs antigos em seu banco de dados a seguir. O ideal é usar uma ferramenta de pesquisa / substituição segura, como a do wp-cli ou seu precursor de uso geral search/replace db por interconexão / it . Especificamente, substitua blogs.dir/SITE_ID/files por uploads e, se você alterar a pesquisa de URL do site por oldsite.com e substitua por newsite.com .

Um pouco de esforço e você tem que ter cuidado com as edições do banco de dados, mas é o único que posso ver para extrair um único site de um multisite existente com todas as suas configurações, etc ... intacta.

EDITAR:

Como visto por @Jake eu esqueci de mencionar os passos finais que você pode ter que dar, por exemplo. pesquisar / substituir URLs antigos. Eu atualizei a lista de acordo.

    
por sanchothefat 03.01.2013 / 14:05
5

É possível remover a instalação multisite sem reinstalar um novo blog. Siga os passos.

  1. Criar um backup, despejo de banco de dados e backup de arquivo de wp-content
  2. Defina% constanteWP_ALLOW_MULTISITE em seu wp-config.php para FALSE
  3. Remova ou comente as configurações de MU em wp-config.php , desta forma:

    /**
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/wordpress/';
    define( 'DOMAIN_CURRENT_SITE', 'localhost' );
    define( 'PATH_CURRENT_SITE', '/wordpress/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
    */
    
  4. Remova as configurações de MU de .htaccess , como a fonte abaixo:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin        
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # END WordPress
    
  5. Crie os permalinks novos, no backend wp-admin/options-permalink.php e talvez copie o resultado em .htaccess , se não for possível para WP, direitos para gravação neste arquivo.

  6. Remover entradas não úteis na tabela users ; use a instrução follow sql em uma ferramenta, como phpMyAdmin ou Adminer

    'ALTER TABLE 'wp_users' DROP 'spam', DROP 'deleted';'
    
  7. As tabelas a seguir podem ser descartadas:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (apenas, se existir)

    (altere wp_ para o prefixo do seu banco de dados)

  8. Agora você tem apenas as últimas tabelas de outros blogs da rede. Se você usar também este conteúdo, exporte-o antes por meio do WordPress export como XML e importe agora na instalação única limpa.

por bueltge 03.01.2013 / 15:47
1

Na verdade, é possível e bastante fácil de fazer; Eu fiz isso sozinho várias vezes.

Existem coisas a serem consideradas.

  1. wp-config.php que define se multi site ou site único
  2. .htaccess que contém as regras de reescrita para suportar multi site
  3. as tabelas adicionais criadas para suportar o multi site

Comentando o multi site define (?) no wp-config e atualizando seus permalinks irá reverter o site para um único site / modo padrão. Então tudo que você precisa fazer é limpar seu banco de dados.

Se por algum motivo você não conseguir acessar seu wp-admin para atualizar os permalinks, simplesmente exclua o arquivo .htaccess. O WordPress irá recriá-lo para você no modo de site único.

Farei o meu melhor para encontrar o link para o artigo sobre códigos / suporte e atualizar a resposta com ele.

Aqui está um link para um item no fórum de suporte enlace

    
por Steve 06.11.2012 / 19:06
0

Os processos básicos aqui funcionam bem mesmo no WP 3.5.1 Um esclarecimento: Se você nomeou seu subsite, terá que alterar os links no banco de dados para remover esse nome. Se meu subsite foi nomeado ... mysite.com/comics, depois de seguir os procedimentos acima, seu WP procurará mysite.com/comics e obterá erros nos permalinks. Edite a tabela WP-OPTIONS procurando a extensão / comics e remova-a. Além disso, verifique se o diretório Uploads está apontando para o local adequado - ele ainda pode mostrar uma entrada de blogs.dir e agora deve apontar para wp-content / uploads /

    
por user28829 12.03.2013 / 21:50
0

O ponto muito importante que não deve ser esquecido, e é menos falado, é que você ainda deve ter a linha:

define( 'WP_ALLOW_MULTISITE', ...

Mas deve ser alterado para

define( 'WP_ALLOW_MULTISITE', 0 );

    
por smhnaji 23.08.2014 / 00:22

Tags