Intereting Posts
Loop – как получить предыдущий / следующий пост для первого / последнего сообщения? Преобразование одиночных вершин в тире в постоянных ссылках Добавить код в заголовок по категории для конкретных сообщений? Подключаемый модуль, в котором отображаются миниатюры x с другого сообщения Использование настраиваемого значения поля для перенаправления с 404 страницы Поиск и отключение таблицы стилей «изгоев» из заголовка: Source Sans Pro Как исправить .htaccess поврежден Работа с Gravatars в области развития локального хоста Ошибки при обновлении плагина через репозиторий плагинов WordPress Как правильно создать дочернюю тему Отслеживание срока службы запроса Как я могу использовать другой значок меню администратора по умолчанию для настраиваемого типа сообщений? Заказывать сообщения по таксономии и метазначению Проверка того, что данные уже выведены в базе данных wp – пользовательский плагин wordpress 3.0 json issue

Как заменить доменное имя в базе данных WordPress?

У меня есть база данных WordPress, которая была установлена ​​в среде разработки … таким образом, все ссылки на сам сайт имеют фиксированный IP-адрес (скажем, 192.168.16.2). Теперь мне нужно перенести эту базу данных на новую установку WordPress на хостинг. Проблема в том, что дамп SQL содержит много ссылок на IP-адрес, и я должен заменить его на: my_domain.com.

Я мог бы использовать sed или какую-либо другую команду, чтобы изменить это из командной строки, проблема в том, что существует много данных конфигурации, в которых используется JSON. И что? Ну, как вы знаете, массивы JSON используют такие вещи, как: s:4: знать, сколько символов имеет элемент, и, таким образом, если я просто заменю IP на доменное имя, файлы конфигурации будут повреждены.

Несколько лет назад я использовал приложение для Windows, которое позволяет изменять значения в базе данных и заботится о массивах JSON. К сожалению, я забыл название приложения … так что вопрос: знаете ли вы какое-либо приложение, которое позволяет мне делать то, что я хочу?

Solutions Collecting From Web of "Как заменить доменное имя в базе данных WordPress?"

Данные, которые вы смотрите, не форматируются JSON. JSON не поддерживает (обычно) типы и длины значений. Вы просматриваете данные SERIALIZED. Поиск google для «mysql replace serialized» дает эту страницу, которая может помочь: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/

Codex имеет достойный путеводитель – изменение URL-адреса сайта .

В основном есть несколько мест, где есть URL-адрес или не так много (возможно, некоторые из них отсутствуют):

  • home и siteurl , которые контролируют, где WP считает сайт;
  • post 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 -ранее/

Они заявляют

 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 . После этого вы можете, когда захотите, изменить записи в базе данных с помощью плагина Adminer. Запишите это в wp-config.php и значения в БД не актуальны:

 define('WP_HOME', 'http://example.com/to-wordpress'); define('WP_SITEURL', 'http://example.com/to-blog'); 

Взгляните на мой ответ на этот вопрос:

  • Легко перемещать установку WordPress от разработки к производству?

Он решает ваши проблемы с очисткой данных и может быть настроен для конкретных потребностей в переносе данных с помощью использования перехватчиков.

Надеюсь, поможет.

Простые SQL-запросы – не требуется сложный REPLACE материал:

 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 или любой другой способ, которым вы предпочитаете доступ к базе данных.

Это очень старый вопрос, но, поскольку я натолкнулся на него, ища что-то еще, я подумал, что добавлю это для будущей справки.

Я думаю, что самый простой, самый полный способ сделать это – использовать searchreplacedb2.php. Его можно найти здесь: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/, а также объяснение его использования.

Это определенно спасло мне много времени с переходом от Dev к живым средам на моих сайтах wordpress.

Просто убедитесь, что вы удалили его с общедоступного сервера по завершении!

Убедитесь, что вы выбрали новую базу данных, затем запустите некоторые 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');