Hmotnost Najít a nahradit WordPress databáze - snadný způsob
Existuje několik příležitostí, kdy musíme změnit URL v naší databázi webových stránek WordPress. Například, musíme to udělat po migraci databáze WordPress z jednoho místa, např. od http://acme.com
vzdáleného výrobního místa http://acme.dev
webové stránky místního rozvoje na našem počítači.
WordPress.org hostí velké množství pluginů, jako je WP DBManager a WP Migrate DB, a existuje také řada nástrojů třetích stran, které vám umožní import databáze snadno. Zložitá část má změnit každou instanci URL uvnitř databáze.
Po migraci databáze, URL uvnitř stále odkazují na staré stránky, v tomto případě acme.com
. Staré adresy URL můžete najít v wp_options
tabulka, nastavená jako hodnota siteurl
a Domov
možnosti a je to pravděpodobně také vloženo do několika dalších řádků a tabulek v databázi. Tyto staré adresy URL mohou nakonec zabránit správnému spuštění vašich stránek změnit na novou adresu URL, v našem příkladu acme.dev
.
V tomto bodě, přístup k našemu vývojovému místu na adrese acme.dev
jednoduše povede na prázdnou stránku.
Jak tedy změníme všechny tyto adresy URL v databázi?
Spuštění dotazu SQL
Obvykle by lidé spustili následující dotaz SQL, který nahradí hodnoty siteurl
a Domov
možnosti v wp_options
stůl.
UPDATE wp_options SET option_value = nahradit (option_value, 'http://acme.com', 'http://acme.dev') WHEE option_name = 'home' NEBO option_name = 'siteurl';
Následně použijí jiný SQL dotaz, aby nahradily všechny výskyty URL v wp_posts
stůl, a to v post_content
sloupce každého řádku.
UPDATE wp_posts SET post_content = nahradit (post_content, 'http://acme.com', 'http://acme.dev');
Spuštění těchto dotazů je funkční řešení, ale zároveň není vhodné. Mohlo by to být dokonce nervy-wracking, vidět jak databáze může obrátit haywire kvůli jednoduchému dohledu uvnitř dotazu.
Využití WP-CLI
Další cesta, kterou můžeme udělat, a kterou jsem zjistil jako vhodnější alternativu, je použití příkazového řádku WP-CLI. To znamená, že budete muset nainstalovat WP-CLI.
Za předpokladu, že jste nainstalovali WP-CLI a máte wp
příkaz dostupný jako alias, přejděte do adresáře, kde jsou umístěny soubory stránek WordPress.
Potom spusťte následující příkaz:
wp search-nahradit 'http://acme.com' http://acme.dev
První parametr, 'http://acme.com'
, je starý záznam, který má být nahrazen druhým, 'http://acme.dev'
.
Příkazový řádek prohledá všechny tabulky v databázi, nejen post_content
sloupec a. \ t wp_options
stůl, a nahradit všechny instance vstupu, který prošel parametry příkazu.
Jak můžete vidět z předchozího snímku, bylo provedeno celkem 225 nahrazení. A udělali jsme to prostým příkazem.
Myslím, že stojí za zmínku, že můžeme použít wp search-replace
příkaz, a to nejen pro nahrazení adres URL, ale pro libovolný kus hodnota uloženy v databázi. Operaci můžeme také omezit na určitou tabulku předáním názvu tabulky jako čtvrtého parametru následujícím způsobem:
wp search-replace '.jpg ".webp' wp_posts
Spuštění výše uvedeného příkazu bude pouze prohledávat wp_posts
, tabulka, která ukládá náš obsah - příspěvky, stránky atd. - a nahrazuje příponu obrázku z .jpg
na .webp
.
WP-CLI dělá zamotanou SQL operaci intuitivnější a můžete s ní pracovat pohodlnějším způsobem. Chcete-li doladit své příkazy, podívejte se do dokumentace WP-CLI, která vám poskytne seznam možností, jak provést pokročilejší operaci s wp search-replace
příkaz.