Я создал сайт в WordPress на нашей машине для разработки. В используемой теме есть множество зон виджетов для отображения текста (боковая панель и лицевая страница). Я использовал простые текстовые виджеты во всех этих зонах, чтобы разместить информацию на дисплее.
Когда я перешел на рабочий сайт, я использовал плагин WP-DB-Backup, чтобы сделать снимок базы данных. Затем я отредактировал полученный файл .sql, чтобы обновить все пути к файлам и ссылки на URL-адреса, чтобы они указывали на наш производственный сайт.
После создания базы данных, веб-сайта и копирования всех файлов на рабочий сайт я запускаю файл .sql из командной строки mysql, чтобы импортировать данные в новую базу данных.
Однако, когда я иду на производственную площадку, появляется часть текста, а часть - нет. Когда я заглядываю в раздел виджетов сайта, текстовые виджеты отсутствуют в некоторых зонах виджетов. Текстовые виджеты даже не видны в зоне «Неактивный виджет», их просто нет.
Я даже пытался повторить процесс, используя плагин BackWPup, заметив, что синтаксис SQL отличается, когда он выгружает базу данных.
Почему я теряю данные текстового виджета во время импорта?
Ответы:
Вот где ваша проблема:
Вы не можете сделать это. WordPress хранит много опций как «сериализованные данные», которые содержат как строковое содержимое, так и их длину . Поэтому, когда вы изменяете URL-адрес и изменяется длина, сериализованные данные перестают быть правильными, и PHP отклоняет их.
Долгосрочная проблема заключается в том, что вы делаете это неправильно. Если вы настраиваете сайт разработки, на который будут перенесены данные, то для начала он должен иметь точно такой же URL-адрес, что и ваш рабочий сайт. Вы можете вручную отредактировать файл HOSTS, чтобы присвоить этому производственному домену (например, example.com) другой IP-адрес (например, 127.0.0.1), и, таким образом, «производственный» URL станет сайтом разработки только для вас. Затем вы можете создавать свои данные, ссылки и все остальное, используя этот рабочий URL-адрес, и когда вы переносите данные, ничего в этом не должно быть изменено.
В краткосрочной перспективе, однако, не используйте простой текстовый поиск / замену в файле SQL. Как вы обнаружили, это ломает вещи.
И хотя я не решаюсь это предложить, есть способ изменить код ядра WordPress для обработки этих неработающих сериализаций. Вы должны изменить файл wp-includes / functions.php и изменить функцию Maybe_unserialize () на следующую:
Это НЕ жизнеспособное долгосрочное решение. Он должен использоваться только для того, чтобы вы могли начать работать прямо сейчас. В долгосрочной перспективе вам нужно исправить процесс разработки, чтобы вам не приходилось делать подобный манипулирование URL-адресами для начала.
источник
most famous worst code
приз должен смотреть не дальше.Для решения этой проблемы я всегда использую инструмент WordPress Serialized Search & Replace , предоставленный здесь. Он прекрасно работает без каких-либо проблем. Я использовал это в течение длительного времени на всех моих требований миграции сайта. Это действительно решает проблемы с переносом базы данных разработки в производство.
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
источник
http://localhost/Me/site_name
наhttp://site.dev
(от одного локального хоста на другой) , используя V 3.0.0 я теряю виджетов и меню позиции как ни странно. Так что, возможно, эта проблема также связана с длиной строки.localhost/Me/site_name
наsite.dev
.Ответ Отто точен. Я также обнаружил, что это трудный путь.
Однако мне удалось обойти это, используя классный скрипт на http://spectacu.la/search-and-replace-for-wordpress-databases/
Чтобы перенести свой WordPress и на новое URL / доменное имя, выполните следующие действия:
источник
Оператор переусердствовал, когда выполнял поиск и замену в файле экспорта базы данных, и в итоге изменил вхождения «wp_» в некоторых сериализованных данных. Решение состоит в том, чтобы сделать поиск и замену более экономным, включив обратную черту в регулярное выражение, а затем вручную обновив оставшиеся ключи в базе данных после импорта.
Если вы мигрируете и меняете префикс, и, как более ручной подход, сделайте следующее (это только касается проблем OP и не касается обновления URL сайта)
источник
Я использовал плагин WP Migrate , который заменяет http и патчи папок. Я получил одну проблему при импорте, но решил поставить следующие строки в верхней части сгенерированного SQL:
Я также попытался с помощью инструмента поиска и замены (v2.1), на который ответил @Yoav, но он все еще ломает мои сериализованные данные.
источник