Вопрос или проблема
Я разработал внешнее приложение для управления своим физическим магазином. Я использую несколько функций WordPress для выполнения некоторых действий.
Все работает отлично, когда я использую приложение из подсистемы (например: domain.com/app/), но я хотел бы использовать его на поддомене (например: app.domain.com), но я не могу к нему получить доступ, он постоянно перенаправляет на сайт WordPress: domain.com/wp-signup.php?new=app
Вы знаете, как с этим справиться? Я мог бы использовать Rest API, но я работаю в контексте WordPress MultiSite, я использую функцию ‘switch_to_blog()’… для выполнения некоторых запросов к базе данных.
Я думаю, что это вызвано тем, что wp-load не может определить, на каком блоге вы находитесь во время загрузки. Я бы попробовал
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
перед тем, как включать wp-load, найдя правильные идентификаторы для domain.com/app/ в вашей таблице wp_blogs.
Ответ или решение
Для решения вашей проблемы с доступом к вашему внешнему приложению на поддомене (например, app.domain.com), вам необходимо правильно инициализировать WordPress в контексте мультисайта. Вот шаги, которые могут помочь вам избежать перенаправления на страницу регистрации и выполнить необходимые действия с использованием функции switch_to_blog()
.
-
Определение текущего сайта: Перед тем как подключить
wp-load.php
, вам необходимо определить ID сайта и блога, который вы хотите использовать. Эти значения можно найти в таблицеwp_blogs
вашей базы данных. Используйте значения, соответствующие вашему сайту, откуда вы хотите получать данные. -
Используйте следующие определения: Вам нужно добавить следующие строки в ваш файл перед подключением
wp-load.php
:
define( 'SITE_ID_CURRENT_SITE', 1 ); // Замените 1 на ID вашего основного сайта
define( 'BLOG_ID_CURRENT_SITE', 1 ); // Замените 1 на ID блога, который вы хотите использовать
define( 'WP_USE_THEMES', false );
- Подключение wp-load.php: Затем подключите
wp-load.php
, как обычно:
require_once('/path/to/your/wordpress/wp-load.php');
Замените /path/to/your/wordpress/
на корректный путь к файлу wp-load.php
на вашем сервере.
- Использование функций WordPress: Теперь вы сможете использовать функции WordPress и переключаться между блогами с помощью
switch_to_blog($blog_id)
, связанного с нужным сайтом:
switch_to_blog($blog_id);
// Ваши WordPress функции
restore_current_blog(); // Вернуться к первоначальному блогу
-
Настройки сервера и CORS: Убедитесь, что ваш сервер правильно настроен для работы с поддоменами. Возможно, потребуется обновить настройки CORS (Cross-Origin Resource Sharing), если вы делаете запросы между поддоменами.
-
Тестирование: После внесения вышеуказанных изменений, протестируйте ваше приложение на поддомене. Проверьте, не возникают ли перенаправления на
wp-signup.php
.
Эти шаги должны помочь устранить проблему с перенаправлением и позволить вашему приложению успешно взаимодействовать с WordPress в мультисайтовом контексте. Если проблемы сохраняются, обязательно проверьте файл .htaccess на наличие правил, которые могут вызывать перенаправления или ограничивать доступ к вашему приложению.