Homepage » WordPress » Ricerca di massa e sostituzione dei database WordPress - La via più semplice

    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.

    IMMAGINE: Sequel Pro, cercando il valore del database

    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-replacecomando.