Come convertire un'installazione WordPress Multisite in un singolo sito

8 ago 2011, 13:14:30
Visualizzazioni: 12.8K
Voti: 19

Data una rete WordPress Multisite con un blog principale, e assumendo che tutto il contenuto sia stato spostato su quel blog, come sarebbe possibile riconvertire la rete in un'installazione WordPress standard non in rete e non multisito?

2
Commenti

Ho trovato due link utili qui sotto, questo È possibile. Ho trovato informazioni utili qui: http://wpmututorials.com/how-to/how-to-disable-multisite/ e qui: http://wordpress.org/support/topic/wordpress-mu-multisite-wordpress-single-wordpress-instance Vedremo come andrà.

User User
28 mar 2012 01:20:59

Penso che un modo migliore per esprimerlo sarebbe estrarre un singolo sito da una rete. Il collasso di una rete funzionerebbe solo per il sito principale, non per quelli creati su di esso.

sanchothefat sanchothefat
3 gen 2013 13:06:55
Tutte le risposte alla domanda 5
5
19

Ho seguito i passaggi per estrarre un sito da un'installazione multisito a un'istanza singola:

  1. Configura una copia pulita di WP ma non installarla
  2. Trova l'ID del sito
  3. Copia i file da blogs.dir/ID/files nella nuova cartella degli uploads di WP
  4. Copia il tema utilizzato dal sito e qualsiasi plugin utilizzato nelle cartelle appropriate nella nuova cartella wp-content
  5. Esegui un backup del database multisito ma solo delle tabelle per il sito target e delle tabelle users e usermeta utilizzando MySQL Workbench o un equivalente
  6. Ripristina il backup in un nuovo database e cambia i prefissi dei nomi delle tabelle in modo che siano tutti uguali, ad esempio da 'wp_SITEID_' a 'wp_'
  7. Utilizzando MySQL Workbench o un browser di query, pulisci le tabelle users e usermeta come segue:
    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.php ma non cliccare su 'Esegui l'installazione'
  9. Crea un file .htaccess predefinito se erano in uso i permalink o visita semplicemente la pagina dei permalink in wp-admin
  10. Dovrai aggiornare i vecchi URL nel tuo database successivamente. Idealmente, utilizza uno strumento di ricerca/sostituzione sicuro come quello in wp-cli o il suo predecessore generico search/replace db di interconnect/it. Sostituisci specificamente blogs.dir/SITE_ID/files con uploads, e se stai cambiando l'URL del tuo sito, cerca oldsite.com e sostituisci con newsite.com.

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

MODIFICA:

Come notato da @Jake, ho dimenticato di menzionare i passaggi finali che potresti dover eseguire, ad esempio la ricerca/sostituzione dei vecchi URL. Ho aggiornato l'elenco di conseguenza.

3 gen 2013 13:05:41
Commenti

Nessuno dei passaggi del punto 7 ha funzionato o ha avuto effetto quando ho cambiato SITEID con l'ID corretto del sito. Invece di ciò, dovresti menzionare che le opzioni siteurl e home probabilmente dovranno essere aggiornate nella tabella wp_options. Il resto era un buon elenco di controllo. Grazie.

Jake Jake
2 dic 2013 03:31:11

Inoltre, sarà probabilmente necessario eseguire una ricerca e sostituzione nel database per il vecchio dominio / nuovo dominio se si cambia. E sarà quasi SICURO che sarà necessario fare una ricerca e sostituzione per blogs.dir o uploads/sites per assicurarsi che i collegamenti a immagini/file siano corretti. Fai attenzione però con tutti i dati serializzati in WP. Non è molto sicuro eseguire una ricerca e sostituzione aperta in MYSQL. Usa qualcosa come: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Jake Jake
2 dic 2013 03:40:38

@Jake grazie, ho dimenticato il contesto del cambio di URL e hai ragione, mi è mancato il passaggio di ricerca/sostituzione per gli URL esistenti, lo aggiungo per completezza

sanchothefat sanchothefat
2 dic 2013 15:35:13

@Jake Non sono entrato nei dettagli ma il passaggio 7 fondamentalmente rimuove gli utenti che non appartengono al sito da cui stai estraendo e si assicura che mantengano le autorizzazioni corrette. È sostanzialmente un'attività di pulizia.

sanchothefat sanchothefat
2 dic 2013 15:45:28

Ho capito cosa facevano, solo che i primi due mi hanno restituito degli errori, ma forse mi mancava qualcosa, e non sono sicuro di avere avuto utenti da ripulire, quindi è stato facile saltarli comunque. E non fraintendermi, questo è stato estremamente utile anche senza quell'altra roba, è solo bene prenderne nota per un uso futuro. Grazie!

Jake Jake
2 dic 2013 17:29:26
1

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

  1. Crea un backup, un dump del database e un backup dei file di wp-content
  2. Imposta la costante WP_ALLOW_MULTISITE nel tuo wp-config.php su FALSE
  3. Rimuovi o commenta le impostazioni MU in wp-config.php, come questo:

    /**
    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 nel sorgente qui sotto:

    # 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. Ricrea i permalink, nel backend wp-admin/options-permalink.php e magari copia il risultato in .htaccess, se WordPress non può farlo per mancanza di diritti di scrittura sul file.

  6. Rimuovi le voci inutili nella tabella users; usa la seguente istruzione sql in uno strumento come phpMyAdmin o Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
    
  7. Le seguenti tabelle possono essere eliminate:

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

    (cambia wp_ con il prefisso del tuo database)

  8. Ora hai solo le ultime tabelle degli altri blog della rete. Se vuoi utilizzare anche questo contenuto, esportalo prima tramite l'esportazione di WordPress come XML e importalo ora nella nuova installazione singola pulita.

3 gen 2013 14:47:40
Commenti

Questa è una buona risposta, ma ho accettato quella di @sanchothefat perché può essere utilizzata per estrarre qualsiasi sito indipendentemente dall'ID, mentre le tue istruzioni mi darebbero il sito principale

Tom J Nowell Tom J Nowell
3 gen 2013 15:08:49
0

In realtà è possibile e abbastanza semplice da fare; l'ho fatto personalmente diverse volte.

Ci sono tre aspetti da considerare.

  1. wp-config.php che definisce se è un sito multisito o singolo
  2. .htaccess che contiene le regole di riscrittura per supportare il multisito
  3. le tabelle aggiuntive create per supportare il multisito

Commentando la definizione del multisito define(?) in wp-config e aggiornando i tuoi permalink, il sito tornerà alla modalità singolo sito/predefinita. Poi tutto ciò che devi fare è pulire il database.

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

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

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

6 nov 2012 18:06:58
1

I processi di base qui descritti funzionano bene anche in WP 3.5.1 Una precisazione: Se hai nominato il tuo sottosito in un certo modo, dovrai modificare i link nel database per rimuovere quel nome. Se il mio sottosito si chiamava... mysite.com/comics allora dopo aver seguito le procedure sopra descritte, il tuo WP cercherà mysite.com/comics e otterrà errori sui permalink. Modifica la tabella WP-OPTIONS cercando l'estensione /comics e rimuovila. Inoltre, verifica che la directory Uploads punti alla posizione corretta - potrebbe ancora mostrare una voce blogs.dir e dovrebbe invece puntare a wp-content/uploads/

12 mar 2013 20:50:50
Commenti

Puoi modificare questo in modo che sia una risposta autonoma? Sembra che possa essere un commento a una delle altre risposte.

s_ha_dum s_ha_dum
12 mar 2013 21:29:53
0

Il punto molto importante che non dovrebbe essere trascurato, e di cui si parla meno, è che dovresti comunque avere la riga:

define( 'WP_ALLOW_MULTISITE',...

Ma dovrebbe essere modificata e aggiornata in

define( 'WP_ALLOW_MULTISITE', 0 );

22 ago 2014 22:22:44