Подключение к удаленной базе данных при локальной установке WordPress
Я разрабатываю сайт для клиента и хочу позволить ему добавлять контент параллельно с моей работой над дизайном и функционалом, чтобы к моменту завершения разработки сайт был практически готов.
В настоящее время я использую XAMPP на порту 81, поэтому URL моего проекта выглядит так:
http://localhost:81/projectname
Мой файл wp-config содержит все необходимые настройки для подключения к удаленной БД, однако при переходе по адресу:
http://localhost:81/projectname
меня постоянно перенаправляет на:
http://localhost/projectname
Я удалил все файлы htaccess, думая, что проблема в них, но это не помогло. Мой провайдер посоветовал открыть порт 3306, что я и сделал, но это также не решило проблему.
Возможно, это как-то связано с использованием порта 81 в XAMPP?
ОБНОВЛЕНИЕ: Настройки сайта ведут на онлайн-версию, поэтому:
Адрес сайта = http://example.com
Адрес WordPress = http://example.com
Спасибо за помощь

Неужели нет способа вытянуть контент на локальный сайт, чтобы я мог работать над разработкой сайта, пока клиент добавляет контент в живую базу данных?
Если удалённый сервер поддерживает подключение, вы можете подключиться к удалённой базе данных. Просто правильно настройте константы подключения:
// ** Настройки MySQL - Эту информацию можно получить у вашего хостинг-провайдера ** //
/** Имя базы данных для WordPress */
define( 'DB_NAME', 'database_name_here' );
/** Имя пользователя MySQL */
define( 'DB_USER', 'username_here' );
/** Пароль к базе данных MySQL */
define( 'DB_PASSWORD', 'password_here' );
/** Хост MySQL */
define( 'DB_HOST', 'localhost' );
Вам почти наверняка также придётся установить эти настройки в локальной установке:
define( 'WP_SITEURL', 'http://example.com/wordpress' );
define( 'WP_HOME', 'http://example.com/wordpress' );
Я почти гарантирую, что у вас всё равно возникнут проблемы, не говоря уже о том, что изменения, которые вы вносите, будут применяться на живом сервере.
Существуют другие потенциальные решения, такие как зеркалирование базы данных, но это выходит за рамки данной темы, и я сам никогда этого не делал.
Мой совет — просто скопируйте живую базу данных на локальный сервер в начале проекта и не пытайтесь синхронизировать базы данных или как-либо связывать сайт разработки с рабочим. Вы напрашиваетесь на проблемы. В WordPress нет чёткого разделения контента и конфигурации в базе данных.

Спасибо, Shadum, возможно, я пойду по пути постоянного обновления рабочей базы данных... и не волнуйся, рабочая БД скрыта за URL до момента запуска сайта :)

Спасибо, Shadum... я пойду по пути, который ты описал в последнем абзаце

@SixfootJames : ты принял этот ответ давно, но теперь отменил принятие и не выбрал альтернативный вариант. Почему?

Привет, Shadum, я перепробовал все эти варианты и попробовал снова, но это не сработало, поэтому я надеюсь, что у кого-то другого может быть решение.

@SixfootJames : вам, вероятно, придется предоставить больше деталей.

В моей предыдущей компании мы делали это с помощью DNN. Команда могла работать над разными частями веб-сайта, в то время как владелец сайта начинал писать контент прямо в CMS. У каждого был копия сайта через SVN, но все подключались к одной базе данных, что ускоряло процесс разработки. Я хотел бы достичь такого же результата с WordPress. Единственной альтернативой может быть размещение собственного внутреннего сервера и затем, с использованием NO-IP, предоставление клиенту доступа к сайту, подключённому через мою собственную сеть?

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

Шадум, я на самом деле недавно звонил своему интернет-провайдеру, и они заверили меня, что это возможно. Если я предоставлю вам данные удаленной базы данных, как вы думаете, сможете ли вы показать мне, как установить это соединение в конфигурационном файле? Я попробовал все настройки, которые вы дали выше, но когда я перехожу, например, с локального хоста и затем кликаю на другую страницу, меня перебрасывает на страницу живого сайта, вместо того чтобы оставаться на локальных страницах.

Я думаю, s_ha_dum движется в правильном направлении, но, кажется, перепутал порядок действий.
Вам нужно:
- Разрабатывать/дизайнить локально
- Подключаться к УДАЛЁННОЙ базе данных и работать с её содержимым?
Вам понадобится удалённая (тестовая) установка WordPress, где клиент сможет создавать/редактировать свой контент.
Ваш локальный сайт WordPress (localhost) должен указывать на удалённую базу данных, чтобы получать контент, который использует клиент.
Таким образом, у вас будет сайт http://example.com/wordpress, настроенный для редактирования клиентом — даже с базовой установкой WP. Этот сайт будет подключён к своей собственной базе данных.
Ваш локальный сайт должен иметь учётные данные базы данных УДАЛЁННОГО сайта, с параметром DB_HOST
, установленным на http://example.com, или другой путь к mySQL, если доступ осуществляется иным способом через вашего хостинг-провайдера.
На локальном сайте оставьте WP_SITEURL
и WP_HOME
установленными на localhost. В противном случае вы столкнётесь с циклами перенаправления.

Спасибо, Эрик, именно это и происходило, и то, что вы предлагаете — это то, чего я хотел бы достичь, но у меня постоянно возникала проблема с редиректом.
Я объединю оба ваших решения и дам вам знать :) Еще раз спасибо!

Извините, это WP_SITEURL
, а не WP_SITE_URL
. Если это не сработает, возможно, вам нужно добавить define('WP_RELOCATE', true);
в ваш файл wp-config.php
, войти в систему, а затем удалить эту строку.

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

Привет, Эрик. Сейчас работаю над новым проектом и протестировал это. Работает отлично, но очень медленно. Есть ли способ ускорить процесс?

Определение relocate нужно только для первого входа при переносе сайта. Удалите его, как только всё заработает правильно. :)

Не совсем понял? Я имел в виду, что всё работает, но соединение между Localhost и загрузкой страниц довольно медленное. Есть ли способ ускорить это? Я пробовал URL, а также IP-адрес для подключения к БД, но оба варианта работают медленно.

Да, удалите define('WP_RELOCATE', true);
из вашего файла wp-config.php
.

Добавлю здесь примечание: когда я впервые использовал удаленную базу данных перед применением WP_SITEURL
и WP_HOME
, не было никаких проблем с перенаправлением. Просто загружался удаленный набор PHP-стилей, но некоторые файлы не могли загрузиться из-за предупреждения CORS. После изменения конфигурации все заработало сразу же.
