کوکیهای مرورگر نقشی حیاتی در عملکرد وبسایتهای وردپرسی دارند. این کوکیها سشن های ورود را حفظ کرده، امکان ارسال فرمها را فراهم میسازند و تعاملات کلیدی کاربران را پشتیبانی مینمایند. هنگامیکه این بستههای کوچک داده بهدرستی عمل نکنند، ممکن است با خطاهای آزاردهندهای مواجه شوید که شما را از دسترسی به پنل مدیریت محروم نموده، فرمهای تماس را مختل کرده یا حلقههای بیپایان ریدایرکت ایجاد کنند.
یکی از شایعترین خطاها، پیام مسدود شدن کوکی ها یا cookies are blocked است که اغلب بهطور ناگهانی و گاهی پس از یک تغییر معمولی، در وبسایت ظاهر میشود.
درک عملکرد کوکیهای وردپرس و نحوه کار آنها
وردپرس برای فرآیند احراز هویت و مدیریت سشن ها (Session Management) به کوکیها وابسته است. هنگامی که وارد داشبورد مدیریت میشوید، سیستم کوکیهای مخصوص احراز هویت را ایجاد میکند تا در مراجعات بعدی با شناسایی هویت، وضعیت ورودتان را حفظ نماید. بدون این کوکیها، وردپرس قادر نخواهد بود وضعیت ورود یا ترجیحات کاربری شما را به خاطر بسپارد.
نمونههایی از کوکیهای متداول وردپرس به صورت زیر هستند:
- wordpress_[hash]: ذخیره اطلاعات احراز هویت برای بخش مدیریت.
- wordpress_logged_in_[hash]: مشخصکردن وضعیت ورود و هویت کاربر.
- wp-settings-{time}-[UID]: نگهداری تنظیمات و ترجیحات شخصی داشبورد.
- comment_author_[hash]: ذخیره اطلاعات نویسنده نظر.
خطاهای مربوط به کوکی معمولاً زمانی رخ میدهند که PHP پیش از تنظیم هدر توسط وردپرس، خروجی ارسال میکند. این خروجی زودهنگام مانع انتقال صحیح کوکیها شده و پیامدهایی مانند موارد زیر را بهدنبال دارد:
- عدم امکان ورود همراه با پیام «مسدود شدن کوکی ها».
- خطای انقضای سشن هنگام ارسال فرمها.
- ایجاد حلقههای ریدایرکت (Redirect Loop) در صفحه wp-admin.
- دادههای ارسالشده در فرم نظرات از دست می روند.
درک این رفتار جهت شناسایی مشکلات مربوط به کوکی کمک میکند. بیشتر این مشکلات از تداخل زمانبندی ناشی میشوند؛ جایی که کد پیش از تنظیم کوکیها توسط وردپرس، اجرا میگردد.

تصویر(۱)
نحوه رفع خطای مسدود شدن کوکی
این خطا نشان میدهد دادهای پیش از آنکه وردپرس فرصت تنظیم کوکیها را داشته باشد، به مرورگر ارسال شده است. رفع مشکل، نیازمند یک بررسی سیستماتیک برای شناسایی منبع این خروجی زودهنگام می باشد.
ممکن است این خطا را در شرایط زیر مشاهده کنید:
- پس از ویرایش فایلهای قالب یا فایل wp-config.php
- بعد از نصب یا بروزرسانی افزونهها
- هنگام انتقال وبسایت بین سرورها
- پس از اعمال تغییرات در تنظیمات PHP
در ادامه، به بررسی دلایل رایج و نحوه رفع آنها پرداخته میشود.
بررسی وجود فضای خالی (whitespace) در فایلهای PHP
وجود خطوط خالی یا فاصله (space) پیش از تگ آغازین php?> یا پس از تگ پایانی ?> در فایلهای کلیدی، بهویژه wp-config.php، میتواند باعث ایجاد این خطا شود.
روشهای مختلفی برای انجام این بررسی وجود دارد؛ مانند استفاده از پروتکل انتقال فایل امن (SFTP)، ویرایشگر داخلی وردپرس (در صورتیکه در دسترس باشد) و روشهای دیگر:

تصویر(۲)
حتی یک فاصله ساده نیز میتواند این خطا را ایجاد کند:
// نادرست :فاصله پیش از تگ آغازین
<?php
/** WordPress configuration file */
// صحیح :بدون فاصله
<?php
/** WordPress configuration file */
در مورد تگ پایانی فایلهای PHP، معمولاً حذف کامل آن توصیه میشود:
// صحیح :نیازی به تگ پایانی نیست
define('WP_DEBUG', true);
/* That's all, stop editing! */
require_once(ABSPATH . 'wp-settings.php');
// مشکلزا :تگ پایانی با احتمال وجود فاصله سفید پس از آن
define('WP_DEBUG', true);
/* That's all, stop editing! */
require_once(ABSPATH . 'wp-settings.php');
?>
این یک نکته ساده ولی بسیار مهم است که میتواند بسیاری از مشکلات مربوط به کوکیها را برطرف کند.
اسکن جهت یافتن کاراکترهای BOM یا Byte Order Mark
کاراکترهای BOM نشانگرهایی نامرئی هستند که برخی ویرایشگرهای متنی به فایلها اضافه میکنند و میتوانند در عملکرد کوکیهای وردپرس اختلال ایجاد نمایند. این مسئله صرفاً یک مشکل مربوط به رمزگذاری (encoding) است که میتوان آن را با استفاده از ویرایشگر کد یا خط فرمان (command line) اصلاح کرد.
در بیشتر ویرایشگرها، گزینه مربوط به رمزگذاری فایل (file encoding) را میتوان از طریق نوار وضعیت (status bar) فعال کرد. اطمینان حاصل کنید که فایل با فرمت UTF-8 بدون BOM ذخیره شده باشد.

تصویر(۳)
همچنین میتوان کاراکترهای BOM را به کمک خط فرمان شناسایی نمود:
# بررسی وجود BOM در فایلهای PHP
find . -type f -name '*.php' -exec file {} \; | grep "with BOM"
برای اصلاح آنها، کافی است فایل های مشخصشده را باز کرده و مجدداً با انتخاب گزینه UTF-8 (بدون BOM) ذخیره نمایید.
شناسایی مشکلات ناشی از خروجی افزونهها
یکی از روشهای متداول و قدیمی برای شناسایی خطاهای وردپرس، غیرفعال کردن تمام افزونهها است؛ این کار از طریق داشبورد مدیریت وردپرس یا با تغییر نام پوشه افزونهها در مسیر wp-content/plugins انجام میشود.
اگر پس از این اقدام مشکل برطرف شود، میتوان افزونهها را یک به یک فعال کرد تا افزونهای که باعث بروز خطا شده است، شناسایی گردد.
خطاهای رایج ناشی از افزونهها معمولاً شامل موارد زیر است:
- ارسال خروجی توسط افزونه پیش از ارسال هدرهای HTTP.
- نمایش پیامهای اشکالزدایی (Debug) در مراحل اولیه بارگذاری سایت.
- رویههای غیربهینه در فرآیند فعالسازی افزونهها
بررسی پیادهسازی فایلهای قالب (Theme)
راهحل رایج دیگر برای شناسایی دلیل خطاهای وردپرس، تغییر قالب به یکی از موارد پیشفرض است تا مشخص گردد که آیا خطا به قالب فعلی مربوط میشود یا خیر. اگر پس از این تغییر خطا برطرف شد، باید فایل functions.php قالب فعلی را از نظر خروجیهای زودهنگام بررسی کرد:
// نادرست (خروجی قبل از ارسال هدرها)
<?php
echo "Debug message"; // این خروجی باعث بروز خطای مربوط به کوکیها خواهد شد
function my_theme_setup() {
// کد راهاندازی قالب
}
// صحیح (عدم وجود خروجی پیش از ارسال هدرها)
<?php
function my_theme_setup() {
// کد راهاندازی قالب
}
// اشکالزدایی فقط در زمان مناسب
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('Debug message');
}
راهحل ساده این است که تمام کدها درون یک تابع قرار گیرند و بهصورت مستقیم (یعنی خارج از توابع) در فایل درج نشوند.
رفع خطای «مسدود شدن کوکی ها یا عدم پشتیبانی توسط مرورگر»
این نوع خطای کوکی، بیشتر به مشکلات مرورگر مربوط میشود. برخلاف خطای «خروجی غیرمنتظره» که معمولاً نیازمند بررسی فنی در سطح کد و سرور است، رفع این مشکل بیشتر به اقدامات سادهتر وابسته خواهد بود؛ از جمله این اقدامات می توان به پاککردن کوکیها و کش مرورگر، بررسی تنظیمات حریم خصوصی یا بهکارگیری مرورگری دیگر برای تست اشاره کرد.
مرورگر Google Chrome

تصویر(۴)
برای مرورگر Google Chrome، مسیر زیر را دنبال کنید:
Settings > Privacy and security > Third-party cookies
سپس:
[*.]example.com
- روی Add در کنار گزینه Sites allowed to use third-party cookies کلیک کنید.
- دامنه خود را وارد کنید. برای مثال:
- گزینه Including third-party cookies on this site را فعال نمایید.
مرورگر Microsoft Edge
در مرورگر Microsoft Edge این تنظیمات از طریق بخش “Cookies and site permissions” قابل انجام است:

تصویر(۵)
مرورگر Firefox
برای مرورگر Firefox، تنظیمات کوکی را میتوانید از مسیر Settings > Privacy and Security > Cookies and Site Data تغییر دهید:

تصویر(۶)
حالت Standard برای حفظ تعادل میان حریم خصوصی و عملکرد مناسب سایتها توصیه میشود. برای اضافهکردن استثنا، روی دکمه Manage Exceptions کلیک کرده و نشانی وبسایت وردپرس خود را وارد کنید:

تصویر(۷)
مرورگر Safari
در مرورگر Safari این گزینه از مسیر Settings > Advanced قابل دسترسی است. در این بخش، گزینهای به نام “Block all cookies” وجود دارد که باید آن را غیرفعال نمایید:

تصویر(۸)
فارغ از مرورگری که استفاده میشود، در تنظیمات آن گزینههایی برای تعیین نحوه رفتار مرورگر با کوکیها وجود دارد که میتوانند به رفع خطای مسدود شدن کوکی کمک کنند.
تداخل افزونههای امنیتی
برخی افزونههای امنیتی وردپرس ممکن است سیاستهای سختگیرانهای نسبت به کوکیها اعمال کنند که با پیکربندی فعلی سایت تداخل داشته باشد. سه مورد رایج این مشکلات عبارتند از:
- قوانین WAF که مانع ارسال یا دریافت صحیح کوکیها میشوند.
- مدیریت سشن (Session Management) که تنظیمات پیشفرض وردپرس را تغییر می دهد.
- محدودیتهای جغرافیایی که بر نحوه تحویل و دریافت کوکیها تأثیر میگذارند.
اگر با غیرفعالسازی موقت افزونهها، خطای «مسدود شدن کوکی ها» برطرف شود، به احتمال زیاد یکی از افزونههای امنیتی عامل بروز مشکل است. در این شرایط، بهجای حذف کامل افزونه، بهتر است تنظیمات آن را بازبینی و اصلاح کنید تا ضمن حفظ امنیت، تداخلی در عملکرد سایت ایجاد نشود.
تأثیر پیکربندی سرور
گاهی اوقات، برخی مشکلاتی که به نظر میرسد از سمت مرورگر باشند، ریشه در تنظیمات نادرست سرور دارند. برای رفع آنها، لازم است بخشهایی از پیکربندی سمت سرور بررسی شود؛ بهویژه تنظیمات مرتبط با Session که در فایل php.ini قرار دارد. مانند:
فعالسازی فقط برای سایتهای HTTPS
session.cookie_secure = On ;
جلوگیری از دسترسی JavaScript به کوکیها
session.cookie_httponly = On ;
کاهش خطر حملات CSRF (درخواست جعلی بین سایتی)
session.cookie_samesite = Lax ;
علاوه بر این، هدرهایی که ممکن است روی عملکرد کوکیها تأثیر بگذارند، باید در تنظیمات وبسرور کنترل شوند. در سرورهای Nginx، دنبال هر گونه هدر مربوط به کوکی باشید. مانند نمونه زیر:
ocation ~ \.php$ {
fastcgi_param HTTP_COOKIE $http_cookie;
fastcgi_pass_header Set-Cookie;
}

تصویر(۹)
نحوه رفع حلقههای ریدایرکت هنگام ورود به وردپرس
حلقههای ریدایرکت (Redirect Loops) یکی از مشکلات رایج و آزاردهنده در وردپرس هستند که طی آن، کاربر پس از ورود، مدام بین صفحه ورود و داشبورد مدیریت جابجا میشود، بدون اینکه فرآیند احراز هویت بهدرستی تکمیل گردد. این مشکل معمولاً زمانی رخ میدهد که کوکیهای احراز هویت نتوانند بین درخواستها پایدار بمانند.
مکانیزم وردپرس به این صورت است که پس از ورود، کوکیهای احراز هویت را بررسی میکند؛ اگر این کوکیها نامعتبر یا غیرقابلدسترسی باشند سیستم، کاربر را مجددا به صفحه wp-login.php بازمیگرداند.
برای شناسایی و رفع این مشکل، توصیه میشود حالت اشکالزدایی (Debug Mode) وردپرس را فعال کرده و محتوای فایل debug.log را بررسی کنید. این کار به شما کمک میکند الگوهای ریدایرکت و وضعیت کوکیها را در لحظه تلاش برای ورود شناسایی کرده و علت اصلی اختلال را پیدا نمایید.
بررسی تنظیمات آدرس (URL) در وردپرس
شایعترین علت حلقههای ریدایرکت، عدم تطابق میان “نشانی وردپرس” و “نشانی سایت” در تنظیمات وردپرس است:

تصویر(۱۰)
بهطور خلاصه، این دو مقدار باید کاملاً یکسان باشند. این کار را میتوان از طریق رابط کاربری وردپرس یا مستقیماً در فایل wp-config.php انجام داد:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com')
باید اطمینان حاصل کنید که هر دو مقدار از پروتکل یکسان (HTTP یا HTTPS) و دامنه یکسان (با www یا بدون www) استفاده میکنند.
تعریف دامنه کوکی بهصورت مشخص
بدون پیکربندی صریح، وردپرس تلاش میکند «دامنه کوکی» را بهصورت خودکار تشخیص دهد؛ اما این فرآیند در محیطهای میزبانی پیچیده، نصبهای مبتنی بر زیردامنه یا هنگام استفاده از تنظیمات غیراستاندارد دامنه، ممکن است با شکست مواجه شود.
برای جلوگیری از این مشکل، میتوان تنظیمات زیر را به فایل wp-config.php اضافه کرد:
// برای دامنههای استاندارد
define('COOKIE_DOMAIN', example.com');
// برای زیر دامنههایی که نیاز به کوکی دامنه والد دارند
define('COOKIE_DOMAIN', '.example.com');
// برای نصب در زیردایرکتوریها
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/')
این پیکربندیها بهویژه تحت شرایطی مانند نصب وردپرس در زیردایرکتوریها، مدیریت شبکههای چند سایتی (Multisite) یا فعالیت سایت روی چند زیر دامنه، اهمیت بالایی دارند.
تعیین دامنه کوکی باعث میشود مرورگر بداند کدام بخشهای سایت اجازه خواندن یا نوشتن کوکیهای مشخص را دارند و این کار موجب پایداری بیشتر وضعیت ورود و مدیریت بهتر سشن ها (Sessions) خواهد شد.
رفع خطاهای “انقضای سشن” (Session Expired) در فرمهای وردپرس
خطاهای مربوط به انقضای سشن، یکی از مشکلات رایج در وردپرس هستند که بهویژه هنگام ارسال فرمها در صفحات تماس با ما، فرآیندهای پرداخت یا فرمهای چندمرحلهای رخ میدهند. این خطا معمولاً زمانی ایجاد میشود که توکنهای امنیتی یکبارمصرف منقضی شدهاند یا زمانیکه کوکیهای سشن نتوانند وضعیت موردنیاز را میان نمایش فرم و ارسال آن حفظ کنند.

تصویر(۱۱)
توکنهای امنیتی وردپرس معمولاً بین ۲۴ تا ۴۸ ساعت اعتبار دارند اما بهدلیل ملاحظات امنیتی، این بازه در عمل ممکن است کوتاهتر باشد.
برای کاهش این مشکل، میتوانید با بهینهسازی تنظیمات سشن در فایل php.ini سرور، مدیریت بهتری روی فرمها داشته باشید:
تنظیمات پیشنهادی در php.ini:
session.gc_maxlifetime = 3600 ; اعتبار سشن به مدت ۱ ساعت
session.cookie_lifetime = 0 ; اعتبار تا زمان بستن مرورگر
session.cache_expire = 180 ; کش سشن به مدت ۳ ساعت
از سوی دیگر، کش صفحات نیز میتواند موجب ایجاد تداخل شود زیرا ممکن است نسخههای قدیمی فرم به کاربر ارائه شوند. برای جلوگیری از این مشکل، نباید صفحات مربوط به فرمها کش کنید. به عنوان مثال در functions.php قالب، چنین کدی اضافه نمایید:
// حذف صفحات فرم از کش
function exclude_form_pages_from_cache($bypass) {
if (is_page(array('contact', 'quote-request'))) {
return true;
}
if (function_exists('is_checkout') && is_checkout()) {
return true;
}
return $bypass;
}
add_filter('kinsta_cache_bypass', 'exclude_form_pages_from_cache');
کار با عملکرد خاص فرمها
۳ راهکار ثابتشده برای جلوگیری از خطاهای انقضای سشن شامل موارد زیر است:
- حذف فرمها از کش
- افزایش مدت سشن
- پیکربندی اختصاصی افزونهها
برای فرمهای پرداخت ووکامرس:
// افزایش مدت سشن ووکامرس
add_filter('wc_session_expiration', function() {
return 7 * DAY_IN_SECONDS; // ۷ روز
});
// اطمینان از خروج فرمهای ووکامرس از کش
add_action('init', function() {
if (function_exists('is_cart') && (is_cart() || is_checkout() || is_account_page())) {
if (!defined('DONOTCACHEPAGE')) {
define('DONOTCACHEPAGE', true);
}
}
});
برای فرمهای چندمرحلهای یا مبتنی بر AJAX:
// افزایش طول عمر توکنهای امنیتی یکبارمصرف در وردپرس
add_filter('nonce_life', function() {
return 12 * HOUR_IN_SECONDS; // ۱۲ ساعت
}); // حذف آدرس های حاوی فرم از کش
function exclude_form_urls_from_cache($bypass) {
$request_uri = $_SERVER['REQUEST_URI']; if (strpos($request_uri, '/contact') !== false ||
strpos($request_uri, '/quote') !== false ||
strpos($request_uri, '/application') !== false ||
isset($_POST['action'])) {
return true;
} return $bypass;
}
add_filter('kinsta_cache_bypass', 'exclude_form_urls_from_cache');
برای افزونه Gravity Forms:
// تمدید زمان نگهداری دادههای ناقص
add_filter('gform_incomplete_submissions_expiration_days', function($days) {
return 7; // ۷ روز
});
// حذف فرمهای ایجکس از کش
add_action('init', function() {
if (isset($_POST['gform_ajax']) || (isset($_GET['page']) && $_GET['page'] === 'gf_entries')) {
if (!defined('DONOTCACHEPAGE')) {
define('DONOTCACHEPAGE', true);
}
}
});
در مواردی که فرم یا کوکی فاقد hook یا filter اختصاصی باشد، بهترین راهکار تماس مستقیم با توسعهدهنده افزونه جهت بررسی و راهنمایی است.

تصویر(۱۲)
پیشگیری و رفع خطاهای مسدود شدن کوکی در وردپرس
برای جلوگیری از بروز خطای مسدود شدن کوکی، رعایت استانداردهای کدنویسی امری کلیدی است. کوکیها باید پیش از ارائه هرگونه خروجی به مرورگر، تنظیم شوند:
// بررسی headers_sent پیش از تنظیم کوکی
if (!headers_sent()) {
setcookie('custom_cookie', $value, time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
}
استفاده از بافر خروجی (output buffering) نیز میتواند مانع بروز خطاهای غیرمنتظره شود:
ob_start();
// کدهای قالب یا افزونه
ob_end_flu
استفاده از اکشن مناسب در وردپرس برای تنظیم کوکیها:
add_action('init', function() {
if (!is_admin()) {
wp_set_auth_cookie($user_id);
}
});
تنظیمات پیشنهادی در php.ini جهت افزایش امنیت و عملکرد بهتر کوکیها:
output_buffering = 4096
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
session.use_strict_mode = On
در Nginx نیز باید اندازه بافر مناسبی برای جلوگیری از خطاهایی مانند Upstream sent too big header استفاده شود. همچنین تنظیمات سرور برای هدرهای امنیتی میتواند سطح امنیت کوکیها را افزایش دهد.
ثبت خطاهای وردپرس
فعالسازی لاگ اشکالزدایی (debug logging) برای بررسی جامع مسدود شدن کوکی:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', true);
define('SAVEQUERIES', true); add_action('init', function() {
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('=== Cookie Debug Start ===');
error_log('Cookie state: ' . print_r($_COOKIE, true));
error_log('Headers sent: ' . (headers_sent($file, $line) ? "Yes at $file:$line" : 'No'));
error_log('Request URI: ' . $_SERVER['REQUEST_URI']);
error_log('=== Cookie Debug End ===');
}
});
بررسی با ابزار توسعهدهنده مرورگر
در DevTools مرورگر، بخش Network هدرهایی را که دقیقاً ارسال و دریافت میشوند نمایش میدهد، در حالیکه بخش Application وضعیت فعلی کوکیها را نمایش خواهد داد.
// گزارش دقیق کوکیها
console.table(document.cookie.split(';').map(c => {
const [name, value] = c.trim().split('=');
const decoded = decodeURIComponent(value);
return {
name,
value: decoded,
length: value.length,
encoded: value !== decoded
};
}));
// رصد تغییرات کوکیها
const cookieObserver = new MutationObserver(() => {
console.log('Cookie change detected:', new Date().toISOString());
console.log('New state:', document.cookie);
});
cookieObserver.observe(document.documentElement, {
subtree: true,
attributes: true,
characterData: true
});
جمعبندی
کوکیها بخش جداییناپذیر و حیاتی جهت عملکرد صحیح وبسایتهای وردپرس هستند و نقشی کلیدی در مدیریت سشن ها، احراز هویت کاربران و پشتیبانی از تعاملات مختلف سایت ایفا میکنند. خطاهای cookie، مانند «مسدود شدن کوکی ها»، انقضای سشنها یا حلقههای ریدایرکت، اغلب به دلیل ارسال زودهنگام خروجی، وجود فضای خالی یا کاراکترهای BOM در فایلهای PHP، تداخل افزونهها و قالبها، تنظیمات نادرست مرورگر یا پیکربندی نادرست سرور رخ میدهند.
برای رفع و پیشگیری از این مشکلات، باید با بررسی دقیق کدهای PHP، فاصلههای اضافی را حذف و همچنین افزونهها و قالبها را ارزیابی کرد. استفاده از ابزارهای اشکالزدایی وردپرس و توسعهدهنده مرورگر نیز در شناسایی و تحلیل دقیق خطاها بسیار مؤثر است.
