Как обновить ссылки на медиафайлы в WordPress после миграции?

12 июн. 2017 г., 17:58:03
Просмотры: 25.6K
Голосов: 2

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

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

Пример неработающей ссылки на изображение

Странно то, что все URL-адреса изображений правильные в исходном коде блогов. Но в моей медиа-библиотеке во всех ссылках отсутствует .co.uk.

Как мне добавить .co.uk обратно в URL-адреса моей медиа-библиотеки?

2
Комментарии

Поиск и замена обычно не работают для всего в WordPress, потому что некоторые данные сериализованы. Найдите "плагин для миграции базы данных" — есть несколько хороших вариантов — который найдет все старые URL и заменит даже сериализованные копии, например URL в медиатеке.

WebElaine WebElaine
12 июн. 2017 г. 18:40:23

Дай угадаю... Ты заменил domain.com на cosworth-europe.co.uk, верно? Это заменит строку без обновления сериализованных данных. Тебе следует использовать плагин, например Better Search Replace, если нужно заменить сериализованные данные.

Johansson Johansson
12 июн. 2017 г. 19:44:40
Все ответы на вопрос 6
4

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

Вам следует ознакомиться с разделом Перемещение WordPress в кодексе. Особенно с частью Изменение доменного имени и URL-адресов. Обычно я использую плагин или инструмент командной строки, в зависимости от того, что мне доступно.

Плагин:

Better Search Replace — полезный плагин, рекомендованный в указанной выше статье. Есть и другие плагины с аналогичным функционалом, но это мой предпочтительный выбор. Некоторые особенности, которые мне нравятся:

  • Поддержка сериализованных данных.
  • Возможность выбора одной или нескольких таблиц.
  • Функция "пробного запуска" для тестирования и проверки изменений перед их реальным применением.
  • Минимальные требования к серверу (всё, что нужно — это установленный WordPress).

Инструмент командной строки:

Другой вариант, который работает с сериализованными данными — это инструмент search-replace в WP-CLI. Он используется через командную строку (например, через SSH) и требует установки wp-cli на сервере. Вы можете ознакомиться с документацией, чтобы увидеть все доступные опции и примеры, но базовое использование выглядит так:

# Поиск старого доменного имени и его замена на новое
$ wp search-replace 'http://old.example.dev' 'http://new.example.com'
12 июн. 2017 г. 19:49:08
Комментарии

Если вы считаете, что этот ответ заслуживает отрицательного голоса, пожалуйста, оставьте комментарий с объяснением причины, чтобы я мог его обновить или удалить. Я считаю этот ответ корректным, но открыт для критики. Спасибо! :-)

DaveLak DaveLak
12 июн. 2017 г. 20:57:00

Почему этот ответ получил отрицательный голос — для меня загадка. Я проголосовал за него. Better Search and Replace отлично подходит для сериализованных данных, таких как виджеты, пользовательские метабоксы и подобные ситуации.

Christina Christina
12 июн. 2017 г. 22:35:28

Спасибо, Кристина. Думаю, отрицательный голос был из-за того, что в ответе рекомендовался только плагин. Это понятно — я обычно не люблю ответы, которые предлагают только плагины, но в данном случае это казалось оправданным. В любом случае, я обновил ответ, добавив ссылку на статью в Codex, где это рекомендуется. Надеюсь, это кому-то поможет!

DaveLak DaveLak
13 июн. 2017 г. 02:10:57

Better Search Replace — отличный плагин, и я использую его постоянно. Возможно, кто-то поставил низкую оценку, потому что для замены URL медиафайлов в BSR нужно отметить галочку "Replace GUIDs", которая по умолчанию не активна. У меня тоже не работало, пока я не посмотрел таблицу и не увидел, что URL хранится в поле GUID.

Jared Pomranky Jared Pomranky
19 июн. 2019 г. 21:38:10
0

Это довольно распространенная проблема, поэтому я считаю, что она заслуживает подробного ответа, который охватывает ситуацию, с которой большинство, вероятно, сталкивается при поиске в Google.

Для конкретной проблемы пользователя Montrealist

Что касается конкретного вопроса, похоже, что @montrealist некорректно выполнил процесс поиска и замены в базе данных. Я вижу URL медиафайла:

http://www.cosworth-europe/sam/wp-content/...

Предполагаю, что он должен быть:

http://www.cosworth-europe.co.uk/sam/wp-content/...

В какой-то момент вы потеряли домен верхнего уровня (TLD), так что это первое, на что стоит обратить внимание. Вы можете повторно выполнить поиск и замену примерно так:

  • Найти: //www.cosworth-europe/
  • Заменить на: //www.cosworth-europe.co.uk/

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

Для тех, кто ищет решение аналогичных проблем

WordPress хранит множество ссылок на URL в своей базе данных. Нет единого конфигурационного файла для хоста сайта, поэтому вам нужно выполнить поиск и замену в базе данных, чтобы исправить это. В зависимости от того, где используются эти изображения, вам также может потребоваться убедиться, что сериализованные строки заменены корректно.

В большинстве случаев я рекомендую следующее решение:

  1. Установите плагин Better Search Replace
  2. Найдите и замените ваш домен без указания протокола, то есть замените //www.olddomain.com на //www.newdomain.com
  3. Протестируйте и убедитесь, что нет проблем, затем удалите плагин

Обычно я не рекомендую плагины как решение, я предпочитаю минималистичный код, но для этого конкретного случая я бы лично использовал плагин WP Migrate DB Pro для этой и других задач, связанных с переносом базы данных. Плагин Better Search and Replace разработан той же компанией, Delicious Brains, и предоставляет тот же процесс поиска и замены. Это отличный вариант для тщательного решения этой проблемы.

Если у вас возникнут проблемы, и вы не сможете войти в WordPress, вы можете подключиться по (S)FTP к директории вашей установки и установить или обновить следующие константы в файле wp-config.php:

define( 'WP_HOME', 'https://www.example.com' );
define( 'WP_SITEURL', 'https://www.example.com' );

Однако это следует делать только временно. После исправления проблемы в базе данных лучше удалить эти строки из файла wp-config.php.

Изменение URL сайта

5 мая 2020 г. 19:01:12
0

В таблице wp_options отсутствовал домен .co.uk в параметре 'home' option_name. Глупая ошибка! В следующий раз попробую использовать плагины для миграции, которые вы порекомендовали.

13 июн. 2017 г. 11:12:32
0

Пришел посмотреть это — попробовал плагины Velvet Blues Update URL и другие, но ничего не помогло. Тогда я подумал, почему бы просто не обновить это через MySQL?

Сначала обновите таблицу wp_posts. Ваш SQL-запрос будет выглядеть так:

    UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'oldurl', 'newurl') WHERE post_content like "%oldurl%"
5 мая 2020 г. 18:40:48
0

Для миграции сайта рекомендуется использовать плагин WP All in One Migration. https://wordpress.org/plugins/all-in-one-wp-migration/

5 мая 2020 г. 18:43:51
2

Изменение расположения загружаемых файлов в админ-панели WordPress Консоль > Настройки > Медиафайлы > Загружаемые файлы.

10 дек. 2021 г. 11:14:02
Комментарии

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему?

fuxia fuxia
10 дек. 2021 г. 12:35:51

Такой настройки нет в разделе Консоль > Настройки > Медиафайлы > Загрузка файлов

foxbeefly foxbeefly
14 окт. 2024 г. 13:45:26