Вопрос или проблема
Для разработки я хочу иметь возможность использовать свой сайт wordpress с localhost и с различными IP-адресами, возможно, даже с некоторыми временными доменными именами.
Сейчас wordpress не позволяет это, нужно выбрать 1 “сайт url” и менять его каждый раз, когда вы решаете использовать другой порт или другой IP тестового сервера.
Я понимаю, что могу изменить файл hosts на своем локальном компьютере, но это не работает, если я временно хостингую сайт для клиента для тестирования. Я не хочу заставлять их менять свой файл hosts.
Как я могу модифицировать wordpress, чтобы это работало? Существуют ли плагины, которые делают что-то подобное? Если нет, как я могу сделать свой собственный плагин или изменить wordpress, чтобы он делал то, что я хочу? Я разработчик, но не очень хорошо знаю wordpress, php и apache.
Может быть, это так же просто, как создать плагин, который переопределяет глобальные переменные, такие как site_url
и так далее?
Например, сайт wp должен загружаться и не перенаправлять, если я посещаю:
http://localhost
(предполагая, что я слушаю на порту 80)
http://localhost:3000
(предполагая, что я слушаю на порту 3000)
http://wordpress-test
(предполагая, что я изменил свой файл hosts)
http://123.123.123.123
(предполагая, что сайт слушает на этом сервере на порту 80)
К сожалению, здесь есть больше, чем просто возможность обновления. Я рекомендую ознакомиться с https://wordpress.org/support/article/changing-the-site-url/, чтобы сначала узнать, что это включает. Что касается решений на основе плагинов, уже существует множество, что является более безопасным маршрутом, чем создание собственного. Better Search and Replace – популярный из них.
Поскольку вы собираетесь менять этот url для предварительного просмотра клиентов и локальной разработки, предполагаю, что у вас уже есть wp-cli или вы можете легко его установить. В нем уже есть встроенная опция «поиск и замена», которую вы можете использовать:
wp search-replace http://local.test https://throwaway-domain.com/subdirectory --skip-columns=guid --dry-run
Из документации wp-cli по поиску и замене этот скрипт тоже полезен:
# Bash script: Поиск/замена url с производства на разработку (совместимый с мультисайтом)
#!/bin/bash
if $(wp --url=http://example.com core is-installed --network); then
wp search-replace --url=http://example.com 'http://example.com' 'http://example.test' --recurse-objects --network --skip-columns=guid --skip-tables=wp_users
else
wp search-replace 'http://example.com' 'http://example.test' --recurse-objects --skip-columns=guid --skip-tables=wp_users
fi
Примечание: Вы, возможно, заметили флаг --skip-columns=guid
в обоих примерах, который объясняется в первой ссылке под Важно заметить о GUID. Аналогично, плагин Better Search and Replace имеет флажок, чтобы пропустить замену GUID.
Как вы упомянули, что используете docker в другом комментарии, можете посмотреть на этот вопрос на StackOverflow.
Вы можете попробовать эти хуки-фильтры
add_filter('home_url', 'my_url', 10, 2);
add_filter('site_url', 'my_url', 10, 2);
function my_url($url, $path) {
return 'http://your-dev-hostname-or-ip-here/' . $path;
}
Однако имейте в виду, что оригинальный (реальный) url сайта все равно будет использоваться во многих местах в содержимом. Чтобы это исправить, вы можете использовать дополнительный хук на the_content
и выполнить замену строк там.
Вы можете настроить любое количество доменов и поддоменов. Вероятно, я неправильно понял ваш вопрос. Я бы оставил комментарий, но у меня недостаточно репутации (я здесь новенький). К сожалению, мне поставили минус 🙁 – Адмирал Шумный Низ
Комментарий 26 янв. 2020 в 8:23
Я вижу, что вы редактировали вопрос, что делает его более ясным. Мой ответ больше относится к поддоменам и доменам, работающим локально.
WordPress основан на PHP и требует сервер базы данных, такой как MySQL или MariaDB.
Я бы предложил использовать среду разработки, такую как LAMP, WAMP или подобную. Программное обеспечение бесплатное и установит среду разработки, включая Apache, PHP, MySQL и иногда Phpmyadmin.
Вы получите Apache, PHP, MySQL и панель управления для настройки тестовых доменов, хранящихся локально на вашем ПК.
Вам на самом деле не нужно быть экспертом в каких-либо установленных пакетах, так как у вас будет панель управления для настройки баз данных (необходимых для WordPress) и для создания тестовых доменов.
Я предполагаю, что вы используете операционную систему Windows, в этом случае это простой процесс. Пакеты стиля AMP доступны как для Windows, так и для Linux.
Настройка хорошей тестовой среды даст вам хороший опыт, и это отличный способ учиться, потому что вы не можете навредить никому, кроме себя, если сделаете ошибку.
В сети есть тысячи страниц с помощью по всем пакетам, включенным в дистрибутивы AMP.
Я надеюсь, это поможет вам.
Ответ или решение
Как использовать WordPress с любым "URL сайта" для разработки
В процессе разработки сайтов на WordPress часто возникает необходимость использовать разные адреса URL, такие как localhost
, IP-адреса или временные доменные имена. Однако WordPress по умолчанию требует указать единственный site URL
, что ограничивает гибкость, особенно когда требуется тестирование на различных локальных или удаленных серверах.
Основные проблемы
- Ограниченность в
site URL
: WordPress требует фиксированныйsite URL
, что затрудняет использование различных локальных версий. - Необходимость в изменении файла hosts: Хотя решение с изменением файла hosts может работать для локальной разработки, оно неэффективно для демонстрации клиентам, которые могут не захотеть изменять свои настройки.
Возможные решения
1. Использование плагина для управления URL
Существует множество плагинов, которые могут помочь с заменой или управлением URL. Один из популярных вариантов – Better Search Replace. Он позволяет выполнять поиск и замену старых URL на новые в базе данных без риска, связанного с изменением GUID. Плагин может быть полезен, если вам нужно сменить URL для разовых демонстраций клиенту.
2. Использование WP-CLI
Если вы знакомы с командной строкой, установка и использование WP-CLI может значительно упростить вашу работу с заменой URL. Вот команда, которая позволяет выполнить замену:
wp search-replace 'http://example.com' 'http://example.test' --skip-columns=guid
Эта команда выполнит замену всех вхождений адреса в базе данных, кроме GUID (уникальный идентификатор записи), что важно для поддержания целостности ссылок.
3. Создание собственного плагина
Если вам нужно больше гибкости, вы можете создать свой собственный плагин. В этом плагине можно использовать следующие фильтры:
add_filter('home_url', 'my_custom_url', 10, 2);
add_filter('site_url', 'my_custom_url', 10, 2);
function my_custom_url($url, $path) {
return 'http://your-dev-hostname-or-ip-here/' . $path;
}
Этот код позволяет динамически изменять home_url
и site_url
в зависимости от используемого адреса.
Тем не менее, следует помнить, что оригинальный URL будет продолжать использоваться в контенте (например, в ссылках или изображениях). Для этого вам может понадобиться дополнительная обработка через фильтр the_content
:
add_filter('the_content', 'replace_content_url');
function replace_content_url($content) {
return str_replace('http://old-url.com', 'http://new-url.com', $content);
}
4. Конфигурация среды разработки
Для локальной разработки рекомендуется использовать такие инструменты, как XAMPP, WAMP или MAMP, для настройки среды разработки, включающей Apache, PHP и MySQL. Это значительно упрощает процесс установки и позволяет создать несколько локальных сайтов без изменения системных файлов.
Заключение
Использование WordPress с различными URL может показаться сложным, но с помощью правильных инструментов и методов, таких как использование плагинов, WP-CLI или создание собственного решения, это становится значительно проще. Правильная настройка и понимание возможностей WordPress помогут вам эффективно управлять разработкой и тестированием, не затрагивая настройки других пользователей.