Converti un'installazione WordPress multisito in un sito singolo


17

Data una rete multisito di WordPress, con un blog principale, e supponendo che tutto il contenuto sia stato spostato su quel blog, come si ridurrebbe la rete in un'installazione standard non multisito di WordPress?


Ho trovato due link utili di seguito, questo è possibile. Ho trovato informazioni utili qui: wpmututorials.com/how-to/how-to-disable-multisite e qui: wordpress.org/support/topic/… Vedremo come va.

Penso che un modo migliore per formulare sarebbe quello di estrarre un singolo sito da una rete. Il collasso di una rete funzionerebbe davvero solo sul sito principale, non su quelli creati su di esso.
sanchothefat,

Risposte:


17

Ho seguito i passaggi per estrarre un sito da un'installazione multisito in una singola istanza ora:

  1. Configurare una copia pulita di WP ma non installarlo
  2. Trova l'ID del sito
  3. Copia i file da blogs.dir / ID / files nella nuova cartella di upload WP
  4. Copia il tema utilizzato dal sito e tutti i plug-in che utilizza nelle cartelle appropriate nella nuova cartella wp-content
  5. Eseguire il backup del database multisito ma solo le tabelle per il sito di destinazione e le tabelle utenti e usermeta utilizzando MySQL workbench o equivalente
  6. Ripristina il backup su un nuovo database e modifica i prefissi dei nomi delle tabelle in modo che siano tutti uguali, ad es. Da "wp_SITEID_" a "wp_"
  7. Utilizzando MySQL workbench o il browser delle query riordina gli utenti e le tabelle usermeta in questo modo:
    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. Inizia il processo di installazione di WP per creare un wp-config.phpma non fare clic su "Esegui l'installazione"
  9. Crea un file .htaccess predefinito se i permalink erano in uso o visita semplicemente la pagina dei permalink in wp-admin
  10. Successivamente dovrai aggiornare eventuali vecchi URL nel tuo database. Idealmente usa uno strumento di ricerca / sostituzione sicuro come quello in wp-cli o il suo precursore generico cerca / sostituisci db con interconnessione / it . Sostituisci in particolare blogs.dir/SITE_ID/filescon uploads, e se stai cambiando l'URL del tuo sito cerca oldsite.come sostituisci con newsite.com.

Un bel po 'di sforzo e devi stare attento con le modifiche al database, ma è l'unico che posso vedere per estrarre un singolo sito da un sito esistente con tutte le sue impostazioni ecc ... intatte.

MODIFICARE:

Come notato da @Jake ho dimenticato di menzionare gli ultimi passi che potresti dover fare ad es. cerca / sostituisci vecchi URL. Ho aggiornato l'elenco di conseguenza.


Nulla nel passaggio 7 ha funzionato o ha avuto alcun effetto quando sono passato SITEIDall'ID sito corretto. Invece, dovresti menzionare che le opzioni siteurle homedovranno probabilmente essere aggiornate nella wp_optionstabella. Il resto era una lista di controllo piuttosto buona. Grazie.
Jake,

Inoltre, sarà probabilmente necessario trovare e sostituire il database per il vecchio dominio / nuovo dominio se si modifica. E quasi DEFINITAMENTE dovrà trovare e sostituire blogs.dir o upload / siti per assicurarsi che tutti i collegamenti a immagini / file siano corretti. Fai attenzione però con tutti i dati serializzati in WP. Non è molto sicuro eseguire una ricerca aperta e sostituirla in MYSQL. Usa qualcosa come: interconnectit.com/products/…
Jake

@Jake grazie, ho dimenticato il contesto della modifica dell'URL e hai ragione ho perso il passaggio di ricerca / sostituzione per gli URL esistenti, aggiungendolo per completezza
sanchothefat

@Jake Non sono entrato nei dettagli, ma il passaggio 7 sostanzialmente rimuove gli utenti che non appartengono al sito che stai estraendo e si assicura che abbiano ancora le autorizzazioni corrette. È davvero un compito di pulizia.
sanchothefat,

Ho capito cosa hanno fatto, solo la prima coppia ha restituito errori per me, ma forse mi mancava qualcosa e non sono sicuro di avere utenti da ripulire, quindi è stato comunque facile saltare. E non fraintendetemi, questo è stato estremamente utile senza quell'altra roba, giusto per un uso futuro. Grazie!
Jake,

5

È possibile rimuovere l'installazione multisito senza reinstallare un nuovo blog. Segui i passaggi.

  1. Crea un backup, un dump del database e un backup dei file di wp-content
  2. Imposta costante WP_ALLOW_MULTISITEnel tuo wp-config.php suFALSE
  3. Rimuovi o commenta le impostazioni MU in wp-config.phpquesto modo:

    /**
    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. Rimuovi le impostazioni MU da .htaccess, come la fonte di seguito:

    # 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. Crea i permalink nuovi, nel backend wp-admin/options-permalink.phpe forse copia il risultato .htaccess, se non è possibile per WP, i diritti di scrittura su questo file.

  6. Rimuovere le voci non utili nella tabella users; usa la seguente istruzione sql in uno strumento, come phpMyAdmin o Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. È possibile eliminare le seguenti tabelle:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (solo, se esiste)

    (modifica wp_il prefisso del database)

  8. Ora hai solo le ultime tabelle di altri blog della rete. Se lo utilizzerai anche con questo contenuto, esportalo prima tramite WordPress esporta come XML e importa ora nella singola installazione pulita.


1
Questa è una buona risposta, ma ho accettato quello di @sanchothefat in quanto il suo può essere usato per estrarre qualsiasi sito indipendentemente dall'ID, mentre le tue istruzioni mi darebbero il sito di root
Tom J Nowell

1

In realtà è possibile e abbastanza facile da fare; L'ho fatto da solo diverse volte.

Ci sono cose da considerare.

  1. wp-config.php che definisce se multi sito o singolo sito
  2. .htaccess che contiene le regole di riscrittura per supportare più siti
  3. le tabelle aggiuntive create per supportare più siti

Commentando la definizione di più siti (?) In wp-config e aggiornando i permalink, il sito tornerà alla modalità sito singolo / predefinito. Quindi tutto ciò che devi fare è ripulire il database.

Se per qualche motivo non riesci ad accedere al tuo wp-admin per aggiornare i permalink, elimina semplicemente il tuo file .htaccess. WordPress lo ricrea per te in modalità sito singolo.

Farò del mio meglio per trovare il link ai codici / articolo di supporto e aggiornare la risposta con esso.

Ecco un link a un elemento nel forum di supporto http://wordpress.org/support/topic/revert-to-single-site


0

I processi di base qui funzionano bene anche in WP 3.5.1 Un chiarimento: se hai nominato il tuo sito secondario qualcosa devi cambiare i collegamenti nel database per rimuovere quel nome. Se il mio sito secondario è stato chiamato ... mysite.com/comics, dopo aver seguito le procedure di cui sopra, il tuo WP cercherà mysite.com/comics e otterrà errori sui permalink. Modifica la tabella WP-OPTIONS cercando l'estensione / comics e rimuovila. Inoltre, controlla che la directory Uploads indichi la posizione corretta: potrebbe comunque mostrare una voce blogs.dir e ora dovrebbe invece puntare a wp-content / uploads /


Potete per favore modificarlo per essere una risposta autonoma. Sembra che potrebbe essere un commento su una delle altre risposte.
s_ha_dum,

0

Il punto molto importante da non perdere, ed è meno parlato, è che dovresti comunque avere la linea:

define( 'WP_ALLOW_MULTISITE',...

Ma dovrebbe essere cambiato aggiornato a

define( 'WP_ALLOW_MULTISITE', 0 );

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.