[HOWTO] Spostare siti WordPress

Sto impazzendo per spostare dei siti WordPress in una versione multisito, dove non solo sto usando un dominio temporaneo (xmau.com anziché xmau.com) ma ho anche tolto il /wp/ che stava nei miei file. Le operazioni da fare dipendono dalla grandezza del blog.

Premessa:
Andando sulla pagina https://xmau.com/wp/wp-admin/network/sites.php trovo tutti i blog che ho, e passando sopra con il mouse posso vedere il numero del sito. Lo stesso con https://xmau.com/wp-admin/network/sites.php .

Siti piccoli
Se il sito (esclusi i media) è meno di un megabyte, tipo Calendario, l’opzione più semplice è questa:

  1. Sul sito vecchio andare a Tools → Export
  2. Salvare tutto
  3. Scaricare il file
  4. Creare il blog sul sito nuovo
  5. Cancellare il post e la pagina create col sito
  6. Verificare che il tema sia presente
  7. Sul nuovo blog, Strumenti → Importa → WordPress, assegnando .mau. come autore

Siti più grandi
Se non funziona, occorre andare direttamente su sql.

  1. Dal sito vecchio,
    mysqldump --user=UTENTE --password=PASSWORD DATABASE \
    wpx_8_posts wpx_8_postmeta wpx_8_options \
    wpx_8_terms wpx_8_term_relationships wpx_8_term_taxonomy \
    wpx_8_comments wpx_8_commentmeta \
    wpx_8_links \
    > ~/DIRECTORY/subsite_8_.sql

    dove _8_ è il numero del blog
  2. Se i blog hanno indice diverso, cambio dati:
    sed 's/`wpx_8_/`wpx_7_/g; s/wpx_8_/wpx_7_/g' ~/DIRECTORY/subsite_8_.sql > ~/DIRECTORY/subsite_7_new.sql
    e verificare che sia tutto a posto:
    grep -c 'wpx_8_' ~/DIRECTORY/subsite_7_new.sql
  3. Scaricare il file
  4. Sul sito nuovo, cancellare tutto:
    mysql --password=NUOVAPW --user=NUOVOUTENTE --database=NUOVODBDROP TABLE wpx_8_posts, wpx_8_postmeta, wpx_8_options,
    wpx_8_terms, wpx_8_term_relationships, wpx_8_term_taxonomy,
    wpx_8_comments, wpx_8_commentmeta, wpx_8_links;
  5. caricare il file:
    mysql --password=NUOVAPW --user=NUOVOUTENTE --database=NUOVODB --default-character-set=utf8mb4 < ~/DIRECTORY/subsite_8_new.sql
  6. Cambiare il nome del sito:
    mysql --password=NUOVAPW --user=NUOVOUTENTE --database=NUOVODBUPDATE wpx_8_options
    SET option_value = ‘https://xmau.com/NOMEBLOG/’
    WHERE option_name IN (‘siteurl’, ‘home’);

Media:
In ciascun caso bisogna copiare i media.
cd ~/web/wp/wp-content/uploads/sites/8
tar cvzf ~/private/NOMEBLOG-media.tgz .

Utente:
Se come capita a me sbaglia il numero di utente, da phpmyadmin si lancia UPDATE wpx_7_posts SET post_author = 1 WHERE post_author = 2; (a me viene sempre l’utente 2, non so perché)

Permalink

A volte si perdono. Andare in https://xmau.com/NOMEBLOG/wp-admin/options-permalink.php e salvare anche senza toccare nulla.
Cambio nome sito:

Nelle tabelle
wpx_options (sito principale)
wpx_sitemeta (impostazioni di rete)
wpx_blogs (domini dei siti secondari)
wpx_N_options per ogni sito secondario
wpx_N_posts per i contenuti con link interni
oltre che in wp-config.php c’è il nome del sito. Le modifiche da fare sono

UPDATE wpx_options
SET option_value = REPLACE(option_value, ‘temp.xmau.com’, ‘xmau.com’)
WHERE option_value LIKE ‘%temp.xmau.com%’;

UPDATE wpx_sitemeta
SET meta_value = REPLACE(meta_value, ‘temp.xmau.com’, ‘xmau.com’)
WHERE meta_value LIKE ‘%temp.xmau.com%’;

UPDATE wpx_N_options
SET option_value = REPLACE(option_value, ‘temp.xmau.com’, ‘xmau.com’)
WHERE option_value LIKE ‘%temp.xmau.com%’;

UPDATE wpx_N_posts
SET post_content = REPLACE(post_content, ‘temp.xmau.com’, ‘xmau.com’)
WHERE post_content LIKE ‘%temp.xmau.com%’;

UPDATE wpx_blogs
SET domain = REPLACE(domain, ‘temp.xmau.com’, ‘xmau.com’)
WHERE domain LIKE ‘%temp.xmau.com%’;

Lascia un commento

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

Torna in alto