Не могу войти: "ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером. Для использования WordPress необходимо включить cookies."
После переноса сервера я не могу войти на свой сайт. При попытке отправить форму входа появляется ошибка "ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером. Для использования WordPress необходимо включить cookies."
Я абсолютно уверен, что мой браузер поддерживает cookies и они не заблокированы.
Я тщательно изучил эту проблему и попробовал все найденные решения:
- переименовал директорию плагинов
- переименовал директорию темы сайта
- поискал в базе данных вхождения предыдущего URL и заменил их на новый URL
- обновил WordPress до последней версии (4.0)
- определил WP_HOME и WP_SITEURL в wp-config.php
установил ADMIN_COOKIE_PATH, COOKIE_DOMAIN, COOKIEPATH и SITECOOKIEPATH в wp-config.php:
define('ADMIN_COOKIE_PATH', '/'); define('COOKIE_DOMAIN', ''); define('COOKIEPATH', ''); define('SITECOOKIEPATH', '');
попробовал этот хак для wp-login.php: https://wordpress.org/support/topic/cookies-are-blocked-or-not-supported-by-your-browser-1#post-5026171
Я могу войти на сайт в локальной установке, и могу войти на сайт на нашем тестовом сервере. Есть идеи, что может вызывать эту проблему?
Это решение также сработало для меня в мультисайтовой установке. Я мог войти на основной сайт, но не на дополнительный.

У меня это не сработало сразу, но помогло после жесткой перезагрузки (ctrl + f5 в chrome)

Если кто-то ищет официальную документацию, подтверждающую это, тот же совет можно найти внизу страницы https://wordpress.org/support/article/wordpress-multisite-domain-mapping/.

Я также недавно столкнулся с этой проблемой. Оказалось, что хотя доменное имя было направлено на сайт, в мультисайте WordPress не было записи в базе данных для сопоставления доменного имени с правильным блогом. Поэтому, когда WordPress пытался установить куки, он устанавливал их для поддомена вместо сопоставленного домена.

Это сработало для меня. Я использую https://wordpress.org/plugins/wordpress-mu-domain-mapping/ для маппинга доменов, и как только я добавил запись маппинга, ошибка "ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером" перестала появляться.

Эта проблема также может быть вызвана несоответствием site_url точному URL сайта.
В моем случае, site_url и home были //127.0.0.1, что я использовал для гибкости работы с http или https, поэтому я сделал следующее:
// Определяем соответствующий протокол для текущего запроса
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";
// Устанавливаем SITEURL и HOME с использованием динамического протокола.
define('WP_SITEURL', $protocol . '://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', $protocol . '://' . $_SERVER['HTTP_HOST']);

На вашем сайте могут быть следующие проблемы.
- Ошибка в коде
- Лишние пробелы в коде
- Плагины кэширования и безопасности
Подробнее здесь: https://www.scratchcode.io/cookies-are-blocked-or-not-supported-by-your-browser/

Это в основном происходит при первом входе в административную панель.
Если вы уверены, что введенные имя пользователя и пароль верны, попробуйте просто перезагрузить страницу, и вы войдете в систему как обычно.
Вот и все. После этого ваш браузер сохранит необходимую куки.

Я перепробовал все способы из Google, чтобы решить проблему с куками. В итоге я нашел два решения, которые могут вам помочь.
Решение 1:
вашсайт/wp-login.php
Закомментируйте следующие строки 770-773
Код:
if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
$user = new WP_Error('test_cookie', __("<strong>ОШИБКА</strong>: Ваш браузер блокирует cookies или не поддерживает их. Вы должны <a href='http://www.google.com/cookies.html'>включить cookies</a> для использования WordPress."));
else
$user = wp_signon('', $secure_cookie);
Это может сработать для некоторых сайтов, но на других может появиться пустая страница. Кроме того, это не рекомендуется, так как этот файл может быть перезаписан при обновлении WordPress, поэтому попробуйте второе решение.
Решение 2:
вашсайт/wp-content/themes/вашаТема/functions.php
Добавьте следующий код:
setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
if ( SITECOOKIEPATH != COOKIEPATH )
setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
Обновление вашей темы также может привести к потере этих изменений, поэтому лучше добавить этот код в другой файл functions.php, который находится в папке дочерней темы вашей текущей активной темы. Надеюсь, это вам поможет.

Это скорее временные решения или обходные пути, а не оптимальный вариант для постоянного использования...

Я реализовал решение, предложенное wpdevramki, и заметил, что может возникнуть следующая проблема:
"Notice: Constant COOKIE_DOMAIN already defined in /wp-config.php on line 102"
Чтобы решить эту проблему, закомментируйте следующий код в файле wp-includes/default-contants.php
if ( !defined('COOKIE_DOMAIN') )
define('COOKIE_DOMAIN', false);
