Как заменить доменное имя в базе данных Wordpress?
У меня есть база данных Wordpress, которая была установлена в среде разработки... таким образом, все ссылки на сам сайт имеют фиксированный IP-адрес (скажем, 192.168.16.2). Теперь мне нужно перенести эту базу данных на новую установку Wordpress на хостинге. Проблема в том, что дамп SQL содержит много ссылок на IP-адрес, и я должен заменить его на: my_domain.com .
Я мог бы использовать sed
или какую-либо другую команду, чтобы изменить это из командной строки, проблема в том, что существует множество конфигурационных данных, которые используют JSON. Ну и что? Ну, как вы знаете, массивы JSON используют такие вещи, как: s:4:
, чтобы узнать, сколько символов имеет элемент, и, таким образом, если я просто заменю IP-адрес доменным именем, файлы конфигурации будут повреждены.
Несколько лет назад я использовал приложение для Windows, которое позволяет изменять значения в базе данных и заботится о массивах JSON. К сожалению, я забыл название приложения... так что вопрос в следующем: знаете ли вы какое-нибудь приложение это позволяет мне делать то, что я хочу?
10 answers
Данные, которые вы просматриваете, не отформатированы в формате JSON. JSON (обычно) не хранит такие типы значений и длины. То, на что вы смотрите, - это СЕРИАЛИЗОВАННЫЕ данные. Поиск в Google по запросу "сериализованная замена mysql" дает эту страницу, которая может помочь: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/
В Кодексе есть достойное руководство - Изменение URL-адреса сайта.
В основном есть несколько мест, где URL имеет значение или не так много (возможно, я чего-то не хватает):
-
home
иsiteurl
параметры, определяющие, где, по мнению WP, находится сайт; - размещенные идентификаторы GUID, они выглядят как ссылки, но на самом деле они не являются только идентификаторами. Я не совсем уверен, что они не имеют отношения к делу, но у меня часто менялись URL-адреса в тестовом стеке, и я никогда не утруждал себя их обновлением.
- ссылки в посте тела;
- возможно, ссылки в настройках плагина.
Как уже было сказано выше, в базе данных есть только два параметра, которые НЕОБХОДИМО изменить. После импорта базы данных я вхожу в phpMyAdmin и редактирую базу данных напрямую.
Я все время использую сервер разработки на своем компьютере для импорта потоков данных, и у них есть URL-адрес, прикрепленный к сообщениям в соответствии с http://localhost/testsite/post-name / и это никогда не вызывало проблем.
Раньше я использовал SQL-поиск и замену, пока не понял, что это не имеет значения. Я мигрировал несколько сайтов из одного домена в другой, и там, где у меня были абсолютные URL-адреса в содержимом, я буду использовать опцию поиска и замены SQL.
update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');
Дэвид
Это удивительный ресурс, который я заложил в закладки, к которому я возвращаюсь снова и снова http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/
Они заявляют
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
Вы можете задать эти значения с помощью констант в wp-config.php
. После этого вы можете, когда захотите, изменить записи в базе данных с помощью администратора плагина.
Запишите это в wp-config.php
, и значения в БД не имеют значения:
define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
Взгляните на мой ответ на этот вопрос:
Он решает ваши проблемы с очисткой данных и может быть настроен для конкретных потребностей в переносе данных с помощью крючков using.
Надеюсь, это поможет.
Простые SQL-запросы - никаких сложных замен не требуется:
update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';
update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';
Используйте их с помощью phpMyAdmin или любым другим способом, который вы предпочитаете для доступа к базе данных.
Убедитесь, что выбрана новая база данных, затем выполните некоторые обновления sql и команды замены в таблицах, в частности, wp_options, wp_posts, wp_postmeta.
Используйте код, как показано ниже, и меняйте местами старые и новые URL-адреса, без завершающих косых черт. Также при необходимости измените значения префикса таблицы, где это применимо (т. е. wp_)
UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
Это очень старый вопрос, но так как я наткнулся на него, когда искал что-то еще, я подумал, что добавлю это для дальнейшего использования.
Я думаю, что самый простой и полный способ сделать это - использовать searchreplacedb2.php . Его можно найти здесь: http://interconnectit.com/products/search-and-replace-for-wordpress-databases / вместе с объяснением его использования.
Это определенно имеет я сэкономил много времени, перейдя из среды разработки в живую среду на моих сайтах WordPress.
Просто убедитесь, что вы удалили его с общедоступного сервера после того, как закончите!
Я вижу, вы хотите перенести свой сайт WordPress из среды разработки на новый сервер или производственный сервер.
Недавно я перенес свой сайт на рабочий сервер и столкнулся с такой же ситуацией. Мне нужно обновить URL-адрес сайта, потому что WordPress сохранил URL-адрес сайта в базе данных.
Я нашел хороший запрос MySQL, используя который я могу легко изменить URL-адрес непосредственно из базы данных, например.
SET @search := "http://olddomain.com";
SET @replace := "http://newdomain.com";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "siteurl";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "home";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "product_list_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "shopping_cart_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "checkout_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "widget_text";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerImageLogo";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "cunjo_plugin_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "wpsr_socialbt_data";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "issuem";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "_transient_dgxdonate_t70pbg1htu_1396322372";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "dgx_donate_log";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerBackgroundImage";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "transact_url";
UPDATE `wp_postmeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_usermeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_posts` SET `guid`=REPLACE(guid, @search, @replace);
UPDATE `wp_posts` SET `post_content`=REPLACE(post_content, @search, @replace);
Вам просто нужно заменить URL-адрес вашего сайта со старого доменного имени на новое домен затем выполняет запрос на MySQL с помощью PHPMYADMIN.
Для получения дополнительной информации вы можете прочитать этот Учебник.
Https://tryvary.com/wordpress-change-url-in-database-using-mysql-query/