Úvodná » WordPress » Hromadné vyhľadávanie a nahradenie databáz WordPress - jednoduchá cesta

    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.

    IMAGE: Sequel Pro, hľadanie hodnoty databázy

    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-replacepríkaz.