Внешнее приложение с использованием wp-load на поддомене

Вопрос или проблема

Я разработал внешнее приложение для управления своим физическим магазином. Я использую несколько функций 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().

  1. Определение текущего сайта: Перед тем как подключить wp-load.php, вам необходимо определить ID сайта и блога, который вы хотите использовать. Эти значения можно найти в таблице wp_blogs вашей базы данных. Используйте значения, соответствующие вашему сайту, откуда вы хотите получать данные.

  2. Используйте следующие определения: Вам нужно добавить следующие строки в ваш файл перед подключением wp-load.php:

define( 'SITE_ID_CURRENT_SITE', 1 ); // Замените 1 на ID вашего основного сайта
define( 'BLOG_ID_CURRENT_SITE', 1 ); // Замените 1 на ID блога, который вы хотите использовать
define( 'WP_USE_THEMES', false );
  1. Подключение wp-load.php: Затем подключите wp-load.php, как обычно:
require_once('/path/to/your/wordpress/wp-load.php');

Замените /path/to/your/wordpress/ на корректный путь к файлу wp-load.php на вашем сервере.

  1. Использование функций WordPress: Теперь вы сможете использовать функции WordPress и переключаться между блогами с помощью switch_to_blog($blog_id), связанного с нужным сайтом:
switch_to_blog($blog_id);
// Ваши WordPress функции
restore_current_blog(); // Вернуться к первоначальному блогу
  1. Настройки сервера и CORS: Убедитесь, что ваш сервер правильно настроен для работы с поддоменами. Возможно, потребуется обновить настройки CORS (Cross-Origin Resource Sharing), если вы делаете запросы между поддоменами.

  2. Тестирование: После внесения вышеуказанных изменений, протестируйте ваше приложение на поддомене. Проверьте, не возникают ли перенаправления на wp-signup.php.

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

Оцените материал
Добавить комментарий

Капча загружается...