InOnda Novità


WordPress: Esportare l’Installazione di un Singolo Sito in una Installazione Multisito

da 17 Maggio 2021WordPress0 commenti

NOTA: la seguente guida è un processo completamente manuale

Seguendo i seguenti step potrai convertire un Sito di WordPress in standalone in un sito all’interno di una rete di siti con installazione di WordPress Multisito.

Ecco alcuni dettagli del mio ambiente per il contesto:

Indirizzo del sito di originehttps://examle.dev
Tipologia MultisitoSottodomino (è supportata anche la modalità sottodirectory)
Indirizzo Multisitohttps://example.com
indirizzo del sottositohttps://blog.example.com
Prefisso tabella del sottositowp_2_ (il numero deve corrispondere con l’ID del sottosito)

Come trovare il Prefisso della Tabella del Sottosito

Per importare l’installazione di un singolo sito di WordPress in un sottosito di una installazione multisito, dovrai prima di tutto creare un sottosito nel multisito.

Poi dovrai trovare il prefisso della tabella relativa al sottosito che hai creato. Segui i seguenti passi per trovare questa informazione:

  1. Accedi nella bacheca di amministrazione del network di WordPress. (per esempio https://blog.example.com/wp-admin/network)
  2. Clicca sulla voce di menu “Siti”, qui trovi la lista di tutti i tuoi sottositi.
  3. Clicca sul sottosito che hai appena creato.
  4. La barra degli indirizzi del tuo browser mostrerà l’ID del tuo sottosito, per esempio https://blog.example.com/wp-admin/network/site-info.php?id=2

Nell’esempio che ho voluto seguire l’ID del sottosito sarà 2. Guarda la seguente formula per calcolare il prefisso della tabella del tuo sottosito:

Prefisso della tabella di WordPress + ID sottosito + trattino basso = Prefisso della tabella del sottosito

Ecco come apparirà in pratica:

wp_ + 2 + _ = wp_2_

Esporta il file SQL

  1. Accedi nella bacheca dell’installazione del singolo sito di WordPress (per esempio https://example.dev/wp-admin/)
  2. Assicurati di aver installato il plugin WP Migrate DB Pro, quindi apri la pagina di amministrazione di WP Migrate DB Pro. (impostazioni > Migrate DB Pro)
  3. Assicurati di aver selezionato “Export File”
  4. Nella sezione “Find & Replace” copia il contenuto presente nella colonna find nella colonna dell’URL replace (clicca sulla freccia a destra)
  5. Aggiorna la colonna dell’URL replace in modo che corrisponda all’indirizzo del sito secondario (“//blog.example.com” nel mio esempio).
  6. Compila la riga del percorso del file in “Find & Replace” come richiesto (o rimuovila se non richiesto).
  7. Più avanti nel processo dovrai copiare nella directory degli upload (vedi Copia le cartelle Themes / Plugins / Uploads di seguito), quindi potresti voler aggiungere un’altra riga Find & Replace per convertire i percorsi di Upload specifici del sito secondario, ad esempio: “/uploads/” => “/uploads/sites/2/ “.
  8. Ecco qui come appare il mio esempio della sezione Find & Replace:
  9. Clicca sul tasto “Migrate” e aspetta che l’esportazione sia completata.

Modifica il file SQL

  1. Apri il file SQL nell’editor di testo che prefersci
  2. Cerca e sostituisci tutte le istanze del prefisso della tabella del singolo sito con il nuovo prefisso della tabella del tuo sottosito, esempio: “wp_” > “wp_2_”
    • Suggerimento: i nomi delle tabelle e degli indici dovrebbero essere circondati dal simbolo ` (apostrofo all’indietro), quindi bisogna cercare `wp_ e sostituirlo con `wp_2_, questo ti permeterà di non creare problemi nel database.
    • Suggerimento: La maggior parte delle altre sostituzioni richieste dovrebbero trovarsi rispettivamente nei campi “meta_key” e “option_name” delle tabelle “usermeta” e “options” e possono essere trovate con 'wp_.
  3. Salva le modifiche del file SQL e chiudi l’editor.

Importa il file SQL

Importa il file SQL modificato nel database del tuo multisito.

Pulizia Utenti

È qui che le cose si fanno un po’ complicate.

A questo punto tutte le tabelle del database dall’installazione del sito singolo di WordPress sono state importate nel multisito con il prefisso del sito secondario appropriato. Tuttavia, anche le tabelle “users” e “usermeta” sono state importate con il nuovo prefisso, ma in un’installazione multisito le tabelle users e usermeta sono globali e contengono informazioni su tutti gli utenti in tutti i siti secondari.

Ciò significa che è necessario unire attentamente gli utenti e i loro metadati dalle tabelle con prefisso wp_2_ alle tabelle wp_users e wp_usermeta. È quindi necessario aggiornare tutti i loro post, commenti e altri dati per avere lo user_id corretto.

Di gran lunga il modo più semplice per farlo è semplicemente eseguire un po’ di SQL che copia wp_2_users in wp_users, quindi inserisce i dati di wp_2_usermeta in wp_usermeta con i nuovi ID dei rispettivi utenti. Ciò sfrutta il fatto che lo schema del database di WordPress non applica nomi utente univoci. Se hai dei nomi utente duplicati nei dati che stai importando, dovresti prima correggerli. L’SQL sarà simile a qualcosa del genere:

-- To enable matching of old and new user ids.
ALTER TABLE wp_users
ADD COLUMN old_user_id bigint(20) unsigned;

INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_url, user_registered, user_activation_key, user_status, display_name, old_user_id)
SELECT u2.user_login, u2.user_pass, u2.user_nicename, u2.user_email, u2.user_url, u2.user_registered, u2.user_activation_key, u2.user_status, u2.display_name, u2.id
FROM wp_2_users AS u2;

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT u.id, m2.meta_key, m2.meta_value
FROM wp_2_usermeta AS m2
JOIN wp_users AS u ON m2.user_id = u.old_user_id;

UPDATE wp_2_posts, wp_users
SET wp_2_posts.post_author = wp_users.id
WHERE wp_2_posts.post_author = wp_users.old_user_id;

UPDATE wp_2_comments, wp_users
SET wp_2_comments.user_id = wp_users.id
WHERE wp_2_comments.user_id = wp_users.old_user_id;

ALTER TABLE wp_users
DROP COLUMN old_user_id;

Oltre ad aggiornare post e commenti nel nuovo sito secondario con gli ID utente modificati, se hai altre tabelle che contengono dati di autore utente (come la vecchia tabella dei link) dovresti aggiornare anche quelli.

Quando sei soddisfatto che tutto sia aggiornato e funziona come previsto, puoi eliminare le tabelle wp_2_users e wp_2_usermeta utilizzate dal tuo database multisito.

Questo non è un metodo perfetto per importare gli utenti in quanto potresti ritrovarti con utenti duplicati se i tuoi utenti hanno creato account sia sull’installazione del singolo sito che su uno qualsiasi dei siti ospitati nella rete multisito. Si potrebbe plausibilmente eseguire qualcosa di simile all’SQL sopra per unire ed eliminare gli utenti duplicati.

Copia le cartelle Themes / Plugins / Uploads

Guarda la seguente immagine che illustra quali file copiare dall’installazione esistente di un singolo sito all’installazione multisito.

Fatto!

Ora hai importato correttamente l’installazione di un singolo sito di WordPress come un sottosito in una installazione di WordPress multisito.

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Pin It on Pinterest