Ce face wp search-replace
wp search-replace parcurge rândurile din tabelele site-ului și înlocuiește un șir de caractere cu altul. Cel mai des se folosește la mutarea unui site: de pe http://exemplu.test (local) pe https://exemplu.ro (producție) sau invers.
Spre deosebire de un simplu UPDATE ... REPLACE() în SQL, comanda tratează corect datele PHP serializate (în care lungimea fiecărui text e salvată lângă el) și nu modifică cheile primare. Implicit lucrează doar pe tabelele înregistrate în $wpdb; tabelele fără cheie primară sunt sărite.
La final afișează un raport cu tabelul, coloana, numărul de înlocuiri și metoda folosită (SQL pentru coloane simple, PHP pentru coloane cu date serializate), urmat de un mesaj Success. Rulează întâi cu --dry-run, care arată ce s-ar schimba fără să salveze nimic, și fă un export al bazei de date înainte.
Parametri
| Parametru | Descriere |
|---|---|
<old> |
Textul căutat. |
<new> |
Textul cu care se înlocuiește. |
<table>... |
Limitează înlocuirea la anumite tabele; acceptă metacaractere, de exemplu 'wp_post*'. |
--dry-run |
Face toată căutarea și afișează raportul, dar nu salvează modificările. |
--skip-columns=<columns> |
Coloane sărite, separate prin virgulă (de exemplu guid). Acceptă și forma tabel.coloana. |
--skip-tables=<tables> |
Tabele sărite, separate prin virgulă; acceptă metacaractere. |
--all-tables-with-prefix |
Include toate tabelele cu prefixul site-ului, chiar dacă nu sunt înregistrate în $wpdb (de exemplu tabelele unor pluginuri). |
--all-tables |
Include TOATE tabelele din baza de date, indiferent de prefix. |
--network |
Pe multisite: toate tabelele rețelei, nu doar ale site-ului curent. |
--export[=<file>] |
Scrie datele transformate într-un fișier SQL în loc să modifice baza de date (fără nume de fișier, scrie în STDOUT). |
--precise |
Folosește PHP pentru toate coloanele: mai lent, dar mai sigur la date serializate complicate. |
--regex |
Tratează <old> ca expresie regulată (fără delimitatori); documentația avertizează că e de circa 15-20 de ori mai lent. Modificatorii se dau cu --regex-flags, de exemplu i. |
--format=<format> |
table (implicit) sau count, care afișează doar numărul total de înlocuiri. |
--report-changed-only |
Arată în raport doar coloanele în care s-a înlocuit ceva. |
Exemple
Exemplul 1: Verificarea înainte de mutare, cu –dry-run
Cu --format=count vezi doar câte înlocuiri s-ar face. Coloana guid se sare, pentru că identifică articolele și nu trebuie schimbată.
wp search-replace 'http://exemplu.test' 'https://exemplu.ro' --skip-columns=guid --dry-run --format=count
Ieșire în terminal
54
Exemplul 2: Mutarea reală pe domeniul de producție
--report-changed-only scurtează raportul la coloanele modificate. În wp_options și wp_postmeta apar date serializate, de aceea metoda e PHP.
wp search-replace 'http://exemplu.test' 'https://exemplu.ro' --skip-columns=guid --report-changed-only
Ieșire în terminal
+-------------+--------------+--------------+------+
| Table | Column | Replacements | Type |
+-------------+--------------+--------------+------+
| wp_options | option_value | 4 | PHP |
| wp_postmeta | meta_value | 12 | PHP |
| wp_posts | post_content | 37 | SQL |
| wp_posts | post_excerpt | 1 | SQL |
+-------------+--------------+--------------+------+
Success: Made 54 replacements.
Exemplul 3: Corectarea unui text doar în tabelul de articole
Numele tabelului după cele două texte limitează căutarea. Cu --dry-run mesajul final spune câte înlocuiri s-ar face.
wp search-replace 'Iasi' 'Iași' wp_posts --dry-run --report-changed-only
Ieșire în terminal
+----------+--------------+--------------+------+
| Table | Column | Replacements | Type |
+----------+--------------+--------------+------+
| wp_posts | post_content | 8 | SQL |
| wp_posts | post_title | 3 | SQL |
+----------+--------------+--------------+------+
Success: 11 replacements to be made.
Greșeli frecvente
- Rularea fără export al bazei de date: înlocuirea nu are „undo”. Rulează întâi
wp db exportși--dry-run. - Înlocuirea unui text prea scurt sau prea general (de exemplu
exempluîn loc dehttp://exemplu.test): se schimbă și apariții pe care nu voiai să le atingi, cum ar fi adrese de e-mail. - Modificarea coloanei
guidla mutarea unui site existent: cititoarele RSS pot crede că toate articolele sunt noi. Adaugă--skip-columns=guid. - Uitarea cache-ului: dacă site-ul are un cache persistent de obiecte (Redis, Memcached), WP-CLI îți amintește în mesajul final să rulezi
wp cache flush, altfel pot apărea în continuare valorile vechi.
Comenzi înrudite
wp db export: Salvează baza de date a site-ului într-un fișier .sql, folosind datele de conectare din wp-config.php.wp db import: Încarcă un fișier .sql în baza de date a site-ului, cu datele de conectare din wp-config.php.wp cache flush: Golește cache-ul de obiecte WordPress (Object Cache), de exemplu după o modificare directă în baza de date.wp option get / update: Citește, modifică și listează opțiunile WordPress din tabelul wp_options direct din terminal.