Търсене и замяна в базата данни на WordPress
WordPress не съхранява адреса на Вашия сайт само на едно място. Той се намира в настройките, но също така буквално във Вашите публикации, при изображенията и в настройките на теми, плъгини и уиджети. Ето защо, когато променяте адреса, трябва да го замените в цялата база данни. Тук ще прочетете как да направите това безопасно и защо една обикновена SQL заявка може да повреди Вашия сайт.
Кога Ви е необходимо това?
- Вашият сайт е бил на http, а сега работи на https, и виждате смесено съдържание (страница на https, която зарежда елементи през http). Вижте също Няма катинарче или „не е защитено“: отстраняване на mixed content.
- Премествате сайта си на друг домейн или от временен адрес към Вашия истински домейн.
- Направили сте ръчно копие на друг адрес, например тестов сайт.
Ако клонирате сайт с Installatron или Website Manager, те сами коригират адресите в копието. Вижте Клониране и създаване на тестова среда (staging). Ако се премествате само на друг хостинг със същия домейн, не е необходимо да променяте нищо.
Защо не обикновен SQL REPLACE?
В phpMyAdmin можете да замените всички текстове с една SQL заявка. Не правете това за адреси. Много настройки се съхраняват сериализирани: PHP добавя дължината на всеки текст. Това изглежда така:
s:27:"http://example.com/logo.png";
s:27 означава: тук следва текст от 27 знака. Ако го промените на https://, текстът става дълъг 28 знака, но все още пише 27. Тогава PHP вече не може да прочете стойността и настройката безшумно изчезва. Тогава виждате например празно меню, изчезнало лого или липсващи уиджети. Затова използвайте инструмент, който актуализира тези дължини.
Първо резервно копие
Търсенето и замяната се изпълняват веднага и нямат кошче. Предварително направете експорт на базата данни, вижте Експортиране на база данни, или създайте с едно кликване допълнително резервно копие в WebOké Backups, вижте WebOké Backups: преглед, възстановяване или изтегляне на резервно копие.
Начин 1: WP-CLI в Terminal или през SSH
WP-CLI е официалната програма за команден ред на WordPress. При нас я използвате като командата wp в Terminal на DirectAdmin или през SSH. Тя е налична само в пакетите със SSH. Кои са тези пакети, ще прочетете в Terminal във Вашия браузър.
- Отворете Terminal и отидете в папката на Вашия WordPress:
cd domains/example.com/public_html - Първо вижте какво би се променило, без да променяте нищо:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Ще видите за всяка таблица колко замени биха били направени. - Ако всичко е наред, изпълнете същата команда без
--dry-run.
Някои възможности в командата:
- Без допълнителна опция WP-CLI работи с таблиците, които WordPress познава. Ако плъгин използва собствени таблици със същия префикс (например
wp_), добавете--all-tables-with-prefix. Опцията--all-tablesзасяга всички таблици в базата данни, включително тези на друг сайт, който случайно се намира в нея. --skip-columns=guidоставя непроменена колонатаguidс постоянните идентификатори на публикациите. WordPress препоръчва тя никога да не се променя, иначе четците на емисии показват старите публикации отново като нови.- Ако нещо се обърка при сложни настройки,
--preciseработи по-бавно, но по-задълбочено.
Начин 2: плъгин
Ако нямате Terminal или SSH, използвайте плъгин за търсене и замяна, който поддържа сериализирани данни. Има няколко такива в каталога с плъгини на wordpress.org. При избора прочетете описанието: в него трябва да е посочено, че плъгинът обработва правилно сериализирани данни. И тук първо използвайте пробния режим, ако плъгинът има такъв, и изтрийте плъгина, когато приключите. Вижте също Избор, оценка и почистване на WordPress плъгини.
http:// или https:// пред него. Ако замените само example.com, ще промените и имейл адреси като info@example.com и други текстове, в които се среща името. Внимавайте и с наклонената черта в края: ако замените https://example.com/ с https://example.net, адресите ще се слеят.Само адресът на WordPress и адресът на сайта?
Не можете да влезете в администрацията след промяна, защото WordPress Ви пренасочва към грешен адрес? Тогава първо коригирайте само редовете siteurl и home в таблицата wp_options (префиксът wp_ при Вас може да е различен). Това са обикновени текстове, които можете да промените в phpMyAdmin. Как става това, ще прочетете в Отваряне и използване на phpMyAdmin. След това направете останалото с WP-CLI или с плъгин.
След приключване
- Изчистете кеша на Вашия плъгин за кеширане и на Вашия браузър.
- Ако страниците връщат грешка 404, натиснете веднъж „Запазване“ в Настройки > Постоянни връзки. Вижте Моят уебсайт не работи след качване или преместване.
- Проверете няколко страници, менюто, логото и някоя форма. Натиснете F12 и проверете в конзолата дали все още има съобщения за смесено съдържание.
Допълнителна информация
- wp search-replace на developer.wordpress.org (на английски)
- Ръчно преместване на WordPress: файлове, база данни и wp-config.php
Искате да научите повече? Преминете безплатния курс по WordPress, урок 3.2 www, пренасочване и смесено съдържание или урок 9.5 Преместване на WordPress сайт.
