Ricerca di massa e sostituzione dei database WordPress - La via più semplice
Ci sono diverse occasioni in cui dobbiamo cambia gli URL nel nostro database del sito web di WordPress. Ad esempio, dobbiamo farlo dopo aver migrato un database di WordPress da un sito, ad es. dal http://acme.com
sito di produzione remoto, al http://acme.dev
sito web di sviluppo locale sul nostro computer.
WordPress.org ospita un gran numero di plugin, come WP DBManager e WP Migrate DB, e ci sono anche numerosi strumenti di terze parti che ti permettono di database di importazione facilmente. La parte difficile è doverlo fare cambia ogni istanza di URL all'interno del database.
Dopo aver migrato il database, gli URL al suo interno ancora punta al vecchio sito, in questo caso a acme.com
. È possibile trovare il vecchio URL nel wp_options
tabella, impostare come valore del indirizzo del sito
e casa
opzioni, ed è probabilmente anche incorporato in molte altre righe e tabelle nel database. Questi vecchi URL potrebbero eventualmente impedire il corretto funzionamento del tuo sito, quindi è necessario cambiarli al nuovo URL, nel nostro esempio a acme.dev
.
A questo punto, accedendo al nostro sito di sviluppo all'indirizzo acme.dev
semplicemente guiderà a una pagina vuota.
Quindi, come possiamo cambiare tutti questi URL nel database?
Esecuzione di una query SQL
Di solito, le persone eseguono la seguente query SQL che sostituisce i valori di indirizzo del sito
e casa
opzioni nel wp_options
tavolo.
UPDATE wp_options SET option_value = replace (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' OR option_name = 'siteurl';
Successivamente, utilizzano un'altra query SQL per sostituire tutte le occorrenze dell'URL in wp_posts
tavolo, vale a dire nel POST_CONTENT
colonna di ogni riga.
UPDATE wp_posts SET post_content = replace (post_content, 'http://acme.com', 'http://acme.dev');
L'esecuzione di queste query è una soluzione praticabile, ma allo stesso tempo non è conveniente. Potrebbe anche essere snervante, vedendo come il database potrebbe andare in tilt a causa di una semplice svista all'interno della query.
Sfruttare WP-CLI
Un'altra strada che possiamo fare, e che ho trovato un'alternativa più pratica, è di sfruttando la linea di comando WP-CLI. Ciò significa che è necessario aver installato WP-CLI.
Supponendo di aver installato WP-CLI e di avere il wp
comando accessibile come alias, accedere alla directory in cui risiedono i file del sito WordPress.
Quindi, esegui il seguente comando:
wp search-replace 'http://acme.com "http://acme.dev
Il primo parametro, 'Http://acme.com'
, è la vecchia voce da sostituire con la seconda, 'Http://acme.dev'
.
La riga di comando cercherà attraverso tutte le tabelle all'interno del database, non solo il POST_CONTENT
colonna e wp_options
tabella, e sostituisci ogni istanza della voce passata attraverso i parametri del comando.
Come puoi vedere dallo screenshot qui sopra, sono stati fatti in totale 225 rimpiazzi. E lo abbiamo fatto attraverso una semplice linea di comando.
Penso che valga la pena ricordare che possiamo usare il wp search-replace
comando, non solo per la sostituzione di URL, ma qualsiasi parte di valore memorizzato nel database pure. Possiamo anche limitare l'operazione in una determinata tabella passando il nome della tabella come quarto parametro, come segue:
wp search-replace '.jpg ".webp' wp_posts
Eseguendo il comando precedente, cercherà solo attraverso wp_posts
, la tabella che memorizza i nostri contenuti (post, pagine, ecc.) e sostituisce l'estensione dell'immagine da .jpg
a .WebP
.
WP-CLI rende più agevole l'uso di un'operazione SQL intrecciata e consente di lavorare in modo più pratico. Se vuoi ottimizzare i tuoi comandi, dai un'occhiata alla documentazione di WP-CLI, che ti fornisce un elenco di opzioni per eseguire un'operazione più avanzata con wp search-replace
comando.