Pagina principala » WordPress » Mass Find and Replace baze de date WordPress - calea ușoară

    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.

    IMAGE: Sequel Pro, căutând valoarea bazei de date

    Î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-replacecomanda.