Как копировать / переносить сайты WordPress из одного места в другое - PullRequest
4 голосов
/ 04 февраля 2011

Я новичок в WordPress и очень впечатлен платформой ... До тех пор, пока не пришло время публиковать мой локальный WordP-сайт MAMP на моем производственном сервере - просто не существует четкого и простого способа перенести сайт с одного серверадругому.

Цель:

Перенос полного WordPress-сайта из одного места в другое, сохраняя при этом все медиа, настройки и контент.

Существующие ограничения метода:

  • Встроенные функции экспорта / импорта
    • Не передает темы или настройки
    • Добавляет к текущему контенту, но не заменяеттекущие статьи или очистить старые.
  • Выполнение экспорта и импорта sql-dump пути
    • являются абсолютными и не обновляются, поэтому ссылки и т. д. все не работаютна новом сайте.

ПРИМЕЧАНИЕ:

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

Ответы [ 6 ]

4 голосов
/ 04 февраля 2011

Этого нельзя избежать (насколько я знаю)

  1. Вы перемещаете файлы
  2. Перемещение базы данных с использованием экспорта / импорта в phpMyAdmin
  3. Отредактируйте вашу конфигурацию (в /wp-config.php), чтобы отразить новые настройки БД.
  4. выполнить следующие SQL в phpMyAdmin:

Обновление параметров настроек сайта:

UPDATE wp_options SET 
    option_value = replace(option_value, 
                           'http://oldsite.com/path', 
                           'http://spankingnew.com/otherpath') 
WHERE 
    option_name = 'home' 
OR 
    option_name = 'siteurl';

Одновременно обновлять содержимое сообщения и слагы / URL-адреса сообщения:

UPDATE wp_posts SET 
    post_content = replace(post_content, 
                           'http://oldsite.com/path', 
                           'http://spankingnew.com/otherpath'),
    guid = replace(guid, 
                   'http://oldsite.com/path',
                   'http://spankingnew.com/otherpath');

А тебе пора заканчивать ..

Конечно, на этом пути могут быть и другие проблемы, но я делал это несколько раз.

@ Ярин отметил, что существует гораздо более простой способ обновления URL-адресов сайта : просто зашифруйте настройки URL в /wp-config.php.

В /wp-config.php добавьте это:

define('WP_HOME','http://{my site path}');
define('WP_SITEURL','http://{my site path}');

Эта команда «установить и забыть» автоматически обновит все пути URL в базе данных, независимо от того, какие данные вы импортируете. Это особенно полезно, если вы постоянно импортируете данные с другого сайта, как, например, в сценарии разработки для разработчика.

2 голосов
/ 22 сентября 2014

Более простой способ, который я нашел, - открыть дамп MySQL в виде блокнота ++

.

Затем найдите и замените, например, http://www.oldsite.com на http://www.newsite.com

затем импортируйте дамп с помощью PHP MyAdmin

Поправка

Одна из основных проблем при переносе сайта WordPress с одного домена на другой связана главным образом с плагинами или темами, которые хранят настройки в базе данных.

Обычные методы поиска и замены не работают, потому что некоторые темы или плагины хранят данные в сериализованном формате.

скажем, в вашем плагине темы есть настройка, которая называется site home: сайт дома: http://oldsite.com'

Сериализованный, он будет храниться в базе данных следующим образом:

{s:9:"site-home";s:18:"http://oldsite.com";}`

обратите внимание, что s:** в сериализованном массиве хранится строка и сколько символов в строке

так что если вы выполняете стандартный поиск и заменяете, как описано ранее

replacing http://oldsite.com to http://mynewsite.com

теперь 20 символов, а не 18

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

сериализованные данные будут изменены на {s:9:"url";s:18:"http://mynewsite.com";}

Это то, что нарушает WordPress, поскольку данные в сериализованном массиве теперь повреждены, так как количество символов больше не верно.

На мой взгляд, лучший инструмент для миграции WordPress сайтов сделан некоторыми ребятами из interconnect / it.

Проверяет сериализованные массивы и обновляет количество символов, а также стандартные строки.

Если вы переносите сайт WordPress, это единственный инструмент, который вы должны использовать. и его бесплатно

поиск и замена базы данных wordpress

1 голос
/ 05 февраля 2013

Вероятно, самое чистое решение, которое я нашел до сих пор: http://wordpress.org/extend/plugins/duplicator/

0 голосов
/ 14 июля 2012

Да, одна из самых отвратительных недокументированных ошибок WordPress: (

Я написал плагин, который решает всю проблему, правильно - http://wordpress.org/extend/plugins/root-relative-urls/

По сути, он преобразует все ссылки вваша установка WordPress должна быть корневой (т.е. начинаться с "/", которые фактически эквивалентны абсолютным URL-адресам.) И она будет лишать домен ссылок из изображений и других ресурсов по мере их добавления в редактор TinyMCE, поэтому при созданииновый контент, он также будет разумно изменять эти ссылки.

С помощью этого плагина вы можете получить доступ к сайту разработки через IP-адрес, локальный хост или любой псевдоним, который вы хотите ему предоставить. И когда вы делаете дамп базы данныхданные или если вы просто используете утилиту импорта / экспорта, ваш контент будет просто работать так, как вы ожидаете в рабочей среде.

Это не будет работать, если ваша среда разработки имеет структуру корневого уровня, отличную от вашей рабочей.среды, но вы можете использовать правила переписывания .htaccess для обработки этого крайнего случая - все еще без havОн выполняет опасный поиск и заменяет строковые операции над экспортированными данными sql.

Он также не работает с многосайтовыми установками на поддоменах, но это еще более опасно.

0 голосов
/ 05 февраля 2011

Этот ответ основан на arnorhs выше, и это правильно - я просто хочу указать гораздо более простой способ обновления URL сайта : просто зашифруйте настройки URL в /wp-config.php.

В /wp-config.php добавьте это:

define('WP_HOME','http://{my site path}');
define('WP_SITEURL','http://{my site path}');

Эта установка и забывание автоматически обновит все пути URL в базе данных, независимо от того, чтоданные, которые вы импортируете.Это особенно полезно, если вы постоянно импортируете данные с другого сайта, как, например, в сценарии разработки для разработчика.

( ПРИМЕЧАНИЕ: Если вы когда-нибудь получите ошибку сервера, выможет потребоваться включить / выключить постоянные ссылки в панели администратора, чтобы изменения URL-адреса регистрировались)

Подробнее об этом см. Кодекс Wordpress: Изменение URL-адреса сайта


Некоторые другие примечания ...

Если вы пытаетесь переместить / заменить сайт содержимое на другой существующий сайт, вы должны:

  • Нужно только скопировать содержимое папок 'themes', 'plugins', 'uploads' и 'includes / languages'.(Поправьте меня, если я ошибаюсь)
  • Хотел бы очистить существующие данные MyQSL перед выполнением импорта: выделите все таблицы и выберите «пустой» в PhpMyAdmin.
0 голосов
/ 04 февраля 2011

Арнорс прав. Есть еще пара вещей, с которыми я столкнулся:

  1. Некоторые хосты (например, MediaTemple's DV) не позволяют общедоступному пользователю записывать файлы, поэтому в этом случае (сначала убедитесь, что это проблема), вам может понадобиться перейти / wp-content / uploads / и убедитесь, что это chmod 777 (или хотя бы 767). Все подкаталоги должны быть одинаковыми.

  2. Иногда у меня возникали проблемы с импортом больших файлов в mysql. Сочетание клавиш - открыть экспортированный файл sql в текстовом редакторе, скопировать пару тысяч строк в буфер обмена и вставить их в phpMyAdmin в виде вызова SQL. Работает как шарм. Просто убедитесь, что ваша копия заканчивается в конце оператора SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...