Почему мой промежуточный поддомен не отправляет зарегистрированные файлы cookie wordpress?
У нас есть пользовательский плагин для входа и создания учетной записи. Это прекрасно работает в нашей живой среде (example.com)
, но не в нашей промежуточной среде (test.example.com)
.
Когда мы вызываем wp_insert_user
с помощью функции AJAX, она успешно создает пользователя и возвращает его идентификатор. wp_signon
также, похоже, работает. Но в обоих случаях пользователь фактически не входит в промежуточную среду.
Просмотрев инструменты разработчика Chrome, я понял, что живая среда отправляет set-cookie: wordpress_logged_in_...
как и должно быть, но промежуточная среда - нет.
В журнале ошибок об этом ничего нет, и это произойдет, если мы отключим все другие наши плагины в промежуточной среде.
Что может быть причиной этого? Как мы можем заставить его отправлять файлы cookie для входа, как это должно быть?
1 answers
Я заметил, что промежуточная среда имела различное содержимое в своем wp-config.php и файлы .htaccess. Я изменил их, чтобы они были ближе к тем, что были в живой среде.
Находясь там, я заметил, что некоторые отличия в содержимом были связаны с различными плагинами кэширования, которые мы ранее установили в промежуточной среде. В отчаянии Я переустановил все эти плагины через wp-admin, а затем удалил их.
Удивительно, но это исправлено проблема с тем, что файлы cookie не отправляются. Однако файлы cookie содержали неправильные пути или домены. После некоторых проб и ошибок я, наконец, заставил его работать, добавив эти семь строк в wp-config.php:
define('ADMIN_COOKIE_PATH', '/wp-admin');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('DOMAIN_CURRENT_SITE', 'test.example.com');
define('WP_HOME','https://test.example.com');
define('WP_SITEURL','https://test.example.com');
Я предполагаю, что один или несколько плагинов кэширования не очистились после себя, когда мы его удалили.