Hromadné vyhľadávanie a nahradenie databáz WordPress - jednoduchá cesta
Je tu niekoľko prípadov, kedy musíme zmeniť webové adresy v našej databáze webových stránok WordPress. Napríklad, musíme to urobiť po migrácii databázy WordPress z jedného miesta, napr. z http://acme.com
vzdialená výrobná lokalita, na http://acme.dev
miestneho rozvoja v našom počítači.
WordPress.org obsahuje veľký počet zásuvných modulov, ako sú WP DBManager a WP Migrate DB, a je tu aj niekoľko nástrojov tretích strán, ktoré vám umožňujú databázy importu ľahko. Zložitá časť je nutná zmeniť každú inštanciu adresy URL v databáze.
Po migrácii databázy, URL v nej vnútri stále prejdite na starú stránku, v tomto prípade na acme.com
. Starú adresu URL môžete nájsť v priečinku wp_options
tabuľka, nastavená ako hodnota SITEURL
a Domov
a je pravdepodobne aj vložený do niekoľkých ďalších riadkov a tabuliek v databáze. Tieto staré adresy URL môžu nakoniec zabrániť správnemu zobrazovaniu vašich webových stránok, takže je potrebné zmeniť ich na novú adresu URL, v našom príklade acme.dev
.
V tomto okamihu získame prístup k našej lokalite vývoja na adrese acme.dev
bude jednoducho viesť na prázdnu stránku.
Takže ako zmeníme všetky tieto adresy URL v databáze?
Spustenie dotazu SQL
Zvyčajne by ľudia spustili nasledujúci SQL dotaz, ktorý nahradí hodnoty SITEURL
a Domov
možnosti v wp_options
stôl.
UPDATE wp_options SET option_value = nahradiť (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' alebo option_name = 'siteurl';
Následne použijú iný SQL Query na náhradu všetkých výskytov URL v wp_posts
tabuľky, a to v POST_CONTENT
stĺpca každého riadku.
UPDATE wp_posts SET post_content = nahradiť (post_content, 'http://acme.com', 'http://acme.dev');
Spúšťanie týchto dopytov je funkčné riešenie, ale zároveň nie je vhodné robiť. Mohlo by to byť dokonca nervovo-wracking, vidieť, ako sa databáza môže obrátiť haywire kvôli jednoduchému dohľadu v rámci dotazu.
Využívanie WP-CLI
Ďalšia cesta, ktorú môžeme urobiť a ktorú som našiel ako šikovnejšiu alternatívu, je využitie príkazového riadku WP-CLI. To znamená, že budete musieť mať WP-CLI nainštalovaný.
Za predpokladu, že ste nainštalovali WP-CLI a máte wp
príkaz prístupný ako alias, prejdite do adresára, kde sa nachádzajú súbory stránok WordPress.
Potom spustite nasledujúci príkaz:
wp search - nahraďte "http://acme.com" http://acme.dev
Prvý parameter, 'Http://acme.com'
, je starý záznam nahradený druhým, 'Http://acme.dev'
.
Príkazový riadok vyhľadá všetky tabuľky v databáze, nielen POST_CONTENT
stĺpec a wp_options
tabuľka a vymeniť každú inštanciu vstupu, ktorý prešiel parametrami príkazu.
Ako vidíte z vyššie uvedenej snímky obrazovky, bolo vykonaných celkom 225 náhrad. A urobili sme to prostredníctvom jednoduchej velenia.
Myslím, že stojí za zmienku, že môžeme použiť wp search-replace
príkaz, nie len na výmenu adries URL, ale aj akýkoľvek kus hodnota uložené v databáze. Môžeme tiež obmedziť operáciu do určitej tabuľky tak, že prešlame názov tabuľky ako štvrtý parameter takto:
wp search-nahradiť '.jpg' .webp 'wp_posts
Ak spustíte uvedený príkaz, prehliada sa iba wp_posts
, tabuľku, ktorá ukladá náš obsah - príspevky, stránky atď. - a nahradiť rozšírenie obrázka z .jpg
na .WebP
.
WP-CLI spôsobuje, že zamotaná operácia SQL je intuitívnejšia a môžete s ňou pracovať pohodlnejšie. Ak chcete doladiť svoje príkazy, pozrite si dokumentáciu WP-CLI, ktorá vám poskytuje zoznam možností na vykonanie pokročilejšej operácie s wp search-replace
príkaz.