Mass Find and Replace baze de date WordPress - calea ușoară
Există mai multe ocazii acolo unde trebuie modificați adresele URL în baza de date a site-ului nostru WordPress. De exemplu, trebuie să facem acest lucru după migrarea unei baze de date WordPress de pe un site, de ex. de la http://acme.com
site de producție la distanță, la http://acme.dev
site-ul de dezvoltare locală de pe calculatorul nostru.
WordPress.org găzduiește un număr mare de plugin-uri, cum ar fi WP DBManager și WP Migrate DB, și există, de asemenea, un număr de instrumente de terță parte care vă permit să baza de date de import uşor. Partea dificilă trebuie să modificați fiecare instanță URL în interiorul bazei de date.
După migrarea bazei de date, URL-uri din interiorul acesteia încă îndreaptă spre vechiul site, în acest caz să acme.com
. Puteți găsi vechea adresă URL în wp_options
tabel, setat ca valoare a Adresa paginii
și Acasă
și este, probabil, încorporat în mai multe rânduri și tabele din baza de date. Aceste adrese URL vechi pot împiedica în cele din urmă site-ul dvs. să ruleze corect, așa că trebuie să faceți acest lucru modificați-le la noua adresă URL, în exemplul nostru acme.dev
.
În acest moment, accesați site-ul nostru de dezvoltare la acme.dev
va conduce pur și simplu pe o pagină goală.
Deci, cum putem schimba toate aceste adrese URL în baza de date?
Rularea unei interogări SQL
De obicei, oamenii ar executa următorul SQL Query care înlocuiește valorile Adresa paginii
și Acasă
opțiuni în wp_options
masa.
UPDATE wp_options SET opțiunea_value = înlocuiți (opțiunea_value, 'http://acme.com', 'http://acme.dev') WHERE opțiunea_info = 'acasă' SAU opțiunea_name = 'siteurl';
Ulterior, ei folosesc un alt interogare SQL pentru a înlocui toate aparițiile de adrese URL în wp_posts
tabel, și anume în POST_CONTENT
coloana fiecărui rând.
UPDATE wp_posts SET post_content = înlocuiți (post_content, 'http://acme.com', 'http://acme.dev');
Rularea acestor interogări este o soluție viabilă, dar în același timp nu este convenabilă. Ar putea fi chiar nervos-wracking, văzând modul în care baza de date ar putea transforma haywire datorită unei simple supravegheri în cadrul interogării.
Folosind WP-CLI
O altă rută pe care o putem face și pe care am găsit-o a fi o alternativă mai bună, este prin prin utilizarea liniei de comandă WP-CLI. Aceasta înseamnă că va trebui să aveți instalat WP-CLI.
Presupunând că ai instalat WP-CLI și ai wp
comanda accesată ca alias, navigați la directorul unde se află fișierele site-ului WordPress.
Apoi, executați următoarea comandă:
wp search-replace "http://acme.com" http://acme.dev
Primul parametru, 'Http://acme.com'
, este vechea intrare care urmează să fie înlocuită cu cea de-a doua, 'Http://acme.dev'
.
Linia de comandă va căuta prin toate tabelele din baza de date, nu numai POST_CONTENT
coloana și wp_options
tabelul și înlocuiți fiecare instanță a intrării trecute prin parametrii comenzii.
După cum puteți vedea din captura de ecran de mai sus, s-au efectuat în total 225 înlocuiri. Și am făcut-o printr-o simplă linie de comandă.
Cred că merită să menționăm că putem folosi wp search-replace
comanda, nu numai pentru înlocuirea adreselor URL, ci și pentru orice valoare stocate și în baza de date. De asemenea, putem limita operația într-o anumită tabelă trecând numele tabelului ca al patrulea parametru, după cum urmează:
wp search-înlocuiți ".jpg" .webp 'wp_posts
Dacă executați comanda de mai sus, va căuta numai prin wp_posts
, tabelul care stochează conținutul nostru - postări, pagini etc. - și înlocuiți extensia de imagine din .jpg
la .WebP
.
WP-CLI face o operație SQL încurcată mai intuitivă și puteți lucra cu ea într-un mod mai convenabil. Dacă doriți să finalizați comenzile, consultați documentația WP-CLI, care vă oferă o listă de opțiuni pentru a efectua o operațiune mai avansată cu wp search-replace
comanda.