آموزش های وردپرس

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

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

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

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

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

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

 

اما راه حل.

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

function ob_start_at_wp_init() {
	ob_start();
}
add_action('init', 'ob_start_at_wp_init');

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

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

بخوانید:  آموزش ویدئویی پلاگین نویسی وردپرس - افزودن منو به پلاگین

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

  1. امید گفت:

    خب اگه میشه بگید این کد رو کجا بذاریم ؟؟؟

    1. مدیریت گفت:

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

  2. سلام.
    من بعد از این که افزونه ام را ترجمه کردم و زبان آن را utf8 with out BOM قرار دادم ، بعد از نصب افزونه بازم این خطا اومد! ولی وقتی مرورگرو رفرش می کنم خطا دیگه نیست!
    این مسئله ، مشکلی پیش نمیاره؟
    با تشکر.

    1. مدیریت گفت:

      علیکم السلام.
      1- تمام فایلهاتون رو به همین منوال ذخیره کنید
      2- انتهای فایلهای php رو باز بذارین و تگشو نبدین یا اگر میبندین فاصله نذارین
      3- ابتدای شروع فایل و تگ آغازین php رو هم مطمئن شین قبلش فاصله یا کاراکتری نباشه
      مورد 2 و 3 تنها برای فایلهایی هست که کلا php هستن نه html با php

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *