پلاگین رایگان وردپرس

ریدایرکت در وردپرس و رفع خطای headers already sent

بسم الله الرحمن الرحیم.
جایی که از وردپرس استفاده میشه ، استفاده از توابعی php ی مثل Header کار صحیحی شاید نباشه،چرا؟چون هر بستر توسعه ای راه هایی برای راحتی کار کدنویس تدارک دیده،مثل کلاس wpdb و یا wp_redirect یا موارد مشابه.پس بهتره که از مسیر تدارک دیده شده حرکت کنیم تا کارمون استاندارد باشه.
خب این پست برای این نوشته شده که نحوه رفع خطای زیر رو بده:

[code]
Warning: Cannot modify header information - headers already sent by (output started at ...
[/code]

علت این خطا موارد متعددی میتونه باشه،گاها با ذخیره فایلهای مربوطه به صورت utf8 with out BOM این خطا رفع میشه.

اما مواقعی هست که نیاز به ریدارکت و یا هدایت کاربر دارید،قطعا طبق توصیه اول نیاز هست از تابع wp_redirect یا wp_safe_redirect استفاده بشه،این دوتا تابع هم از تایع header در PHP استفاده می کنند که ید طویلی در این نوع خطاها داره!

علت به وجود امدن این خطا هم اینه که جایی که این توابع استفاده میشه نباید قبلش هیچ نوع خروجی ای به سمت مرورگر فرستاده شده باشه.

 

اما راه حل.

روش رفع خطای سشن در وردپرس

[code lang="php"]
function ob_start_at_wp_init() {
ob_start();
}
add_action('init', 'ob_start_at_wp_init');
[/code]

همانطور که می بینید این تابع به init هوک شده و دقیقا در گلوگاه وردپرس میشینه و تمام خروجی ها به سمت مرورگر رو بافر می کنه و اجاره خروجی نمیده تا انتهای اجرای کد.

کد بالا رو در فایل توابع قالب یا functions.php بگذارید.