[Решено] Чтобы использовать WordPress, нужно разрешить cookies
После установки MULTISITE в WordPress (v 4.4.2) и последующем изменении адреса сайта с поддомена на домен (например, с http://test.timeweb.com/ на http://test.ru/), появлялась ошибка «Cookies либо заблокированы, либо не поддерживаются вашим браузером. Чтобы использовать WordPress, нужно разрешить cookies.».
Было много копотни, но наконец-то удалось сделать так, чтобы переменная COOKIE_DOMAIN нормально передавалась.
Ранее я находил решение вовсе отключить куки через define('COOKIE_DOMAIN', false);
, но полностью отключать куки мне не хотелось как и править системные файлы, которые править не надо бы.
Поэтому выход такой — добавить следующую строку в файл wp-config.php перед строкой /* That’s all, stop editing! Happy blogging. */
define('COOKIE_DOMAIN', strtolower( stripslashes( $_SERVER['HTTP_HOST'] ) ) );
После добавления строчки WP стал на нее ругаться:
"The constant "COOKIE_DOMAIN" is defined (probably in wp-config.php). Please remove or comment out that define() line."
Может быть, это когда-то работало для каких-то ушедших в небытиё версий, сейчас - не работает.
Если первоначальная строка имеет другой вид, отличный от "define('COOKIE_DOMAIN', false);", есть смысл ее закомментировать, установив прямо перед ней две косые черты "//", убедившись, чтобы в строке редактора эта запись одна (чтобы остальной код этой строки, если он есть, не был закомментирован), а после того, как строка будет закомментирована, то следующей строкой вставить эту "define('COOKIE_DOMAIN', strtolower( stripslashes( $_SERVER['HTTP_HOST'] ) ) );" (без кавычек).
Попробуйте такой вариант, напишите о результате.
"if ( defined( 'COOKIE_DOMAIN' ) ) {die( ... и так далее... "
сообщение «Cookies либо заблокированы, либо не поддерживаются ...» больше не появляется.
Да и сама ошибка выглядит какой-то мутной, и успешно живет в WP уже много лет. Если посмотреть код, то для чего-то проводится проверка куки, а если куки в браузере действительно заблокированы, тогда код позволяет входить в админ без куки. Это или чей-то бэкдор, или попытка обеспечить обратную совместимость плагинов, или ещё чего-то кому-то зачем-то.
Причём картина идиотская. Из всей сетки не залогиниться нормально только на один, недавно перенесённый сайт.
Но если добавить в wp-config.php
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');
то на него залогиниться можно. Но нельзя на всё остальное.
Три часа сегодня убил в попытках починить. Безрезультатно.
ps: капча у тебя лютая, с пятого раза прочёл.
Мой сайт работает не корректно если Пользователь блокирует куки в своем браузере.
Найти бы-такой плагин для ВордПресс, чтобы он определял, что куки в Браузере Пользователя запрещены и просил Пользователя разрешить куки.
В описании говорится (перевод): ‘Network Subsite User Registration’ (NSUR) плагин убирает ограничение из-за которого регистрация происходит только на основном сайте Сети,
администраторы дочерних сайтов теперь могут позволить пользователям регистрацию только на их сайте.
Еще там примечание для девелоперов: Если вы желаете использовать собственный шаблон страницы авторизации, вы можете переопределить страницу ../local-signup, создав файл "page-signup.php" в папке шаблона родительской или дочерней темы.
1. отключил плагины через базу данных, простое удаление каталогов на хостинге - роняло сайт.
2. в файле wp-config везде где упоминалось MULTISITE добавил значение false.
На локальном сервере восстановил копию с прода - возникла описанная проблема и её решил с помощью описанной автором строчки кода.
Помогло добавить 's' в адреса сайта, через базу данных. Ошибка ушла.
Видимо действительно ошибка была вызвана SSL сертификатом.
Изначально сайт разрабатывался локально и переносился на хостинг с доменом, к которому уже был подключен SSL сертификат.
Поменяла http на https.