wp_headers বনাম সেন্ড হেডার। কখন ব্যবহার করবেন?


10

আমি একই জিনিসটির জন্য উভয়ই আগে দেখেছি wp_headersএবং send_headersব্যবহার করেছি এবং আমি ভাবছি যে আপনি কীভাবে কোনটি ব্যবহার করবেন এবং কখন ...

উপর send_headersপ্যাড পৃষ্ঠা যোগ করার একটি উদাহরণ আছে X-UA-Compatible: IE=edge,chrome=1ইন্টারনেট এক্সপ্লোরার অনগ্রসর সামঞ্জস্যের জন্য যেহেতু মেটা ট্যাগটি প্রায়ই ইন্ট্রানেট সাইটগুলোতে বিফল হয় খুব দেরি লোড

এই কি send_headersউদাহরণস্বরূপ মত দেখায়:

add_action( 'send_headers', 'add_header_xua' );
function add_header_xua() {
    header( 'X-UA-Compatible: IE=edge,chrome=1' );
}

তবে এটি wp_headersকরতে পারেন:

apply_filters ( 'wp_headers', array $headers, WP $this )

add_filter( 'wp_headers', 'wpieeam_headers' );
function wpieeam_headers($headers) {
    if (!is_admin()) {
        $headers['X-UA-Compatible'] = 'IE=edge,chrome=1';    
    }
    return $headers;
}

আপডেট: আমি বাস্তবে কেবল লক্ষ্য করেছি যে এর কম-বেশি নিয়ে একটি কথোপকথন কয়েক বছর আগে একই একই প্রশ্নে শুরু হয়েছিল ...

এছাড়াও, সেন্ড হেডারদের কি কেবল সামনের প্রান্তটিই করতে হবে? আমি wp_headers এই চেক করতে দেখেছি:

if ( isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) )

এবং

if (!is_admin()) 

সুতরাং আমি ভাবছি যে সম্ভবত send_headersএই চেকগুলি করতে হবে না ...


1
সাধারণভাবে বলতে গেলে, একটি ক্রিয়া এবং অন্যটি ফিল্টার। ইভেন্টগুলি ঘটে যখন কিছু করার জন্য ক্রিয়াগুলি হয় এবং একটি ফিল্টার এটি ব্যবহার করার আগে কোনও কিছু সংশোধন করার জন্য হয়।
মিলো

উত্তর:


9

ঠিক আছে তাই আমি মনে করি আমি এটি বের করেছি ...

এই উভয়ই বেশিরভাগ অংশে যেমন আপনি ব্রাউজারে http / php শিরোনাম প্রেরণের মাধ্যমে প্রত্যাশা করতেন তা কাজ করে। wp_headersআসলে send_headers()ফাংশনগুলির মধ্যে একটি ফিল্টার । আপনি কিছু ব্যতিক্রম সহ ব্রাউজারে প্রেরণের আগে শিরোনামগুলি সংশোধন করতে এটি ব্যবহার করতে পারেন। wp_headersযদি এটি একটি স্থির ক্যাশেড পৃষ্ঠা নিয়ে কাজ করে তবে কিছু করতে সক্ষম হবে না ...

এই কোথায় send_headersহুক খেলার মধ্যে আসে। wp_headersফিল্টার করার পরে , send_headers()ফাংশনটি যাচাই করে Last-Modifiedপ্রেরণ করা হয়েছে তা পৃষ্ঠাটি ক্যাশে হয়েছে কিনা তা আমাদের জানিয়ে দেবে এবং তারপরে আমাদের ক্যাশে দেওয়ার পরে বিষয়বস্তু টাইপ ইত্যাদি পাঠিয়ে দেওয়া হয়েছে।

সুতরাং আমার উদাহরণের ব্যবহারের জন্য X-UA-Compatible, যখন তারা দু'জনেই কাজ করে, আমি ব্যবহার করতে আগ্রহী send_headersকেন? একটির জন্য যদি আপনি এই send_headersদুটিটি যুক্ত করে থাকেন তবে প্রতিবারই তা জিতে যাবে এবং পৃষ্ঠা ক্যাশে যাওয়ার পরে যুক্ত হওয়া সত্ত্বেও এটি লোড হয়েছে কিনা তা নিশ্চিত করবে।

একটি ব্যবহার করলে <meta>ট্যাগ মত অনেক জনপ্রিয় অবকাঠামো ব্যবহার এক্স-UA-সামঞ্জস্যপূর্ণ জন্য কাজ করবে এছাড়াও, এটা অনেক ব্রাউজারে কাজ যদি না প্রায় সঙ্গে সঙ্গেই উদ্বোধনী মাথা ট্যাগের পরে লোড করা হবে না। এটি "ইন্ট্রানেট" সেটিংটি নেটওয়ার্ক প্রশস্তভাবে সেট করা থাকলে যেমন বিভিন্ন কারণে হয় । এই কারণে পিএইচপি পদ্ধতি ব্যবহার করা নিরাপদ। তবে, আপনি যদি উভয়ই যুক্ত করেন তবে মেটা ট্যাগটি জিততে পারে (ধরে নেওয়াও এটি যথেষ্ট তাড়াতাড়ি অন্তর্ভুক্ত ছিল।

X-UA-Compatibleসামঞ্জস্যপূর্ণ ক্ষেত্রে, আমি আশা করছি যে শীঘ্রই মাইক্রোসফ্ট আগামী সপ্তাহে আইআই এর পুরানো সংস্করণগুলির জন্য সমর্থন বাদ দিচ্ছে এটি শীঘ্রই অপ্রাসঙ্গিক হবে !


এছাড়াও, আমি চেকটি wp_headersব্যবহার না করেই ফিল্টারটি is_admin()পরীক্ষা করেছি এবং এটি অ্যাডমিন_হেডারগুলিকে সংশোধন করবে না যাতে চেকটি অপ্রয়োজনীয়।

আপনার যদি কোনও কারণে অ্যাডমিন শিরোনামগুলি সংশোধন করার প্রয়োজন হয় তবে আমি জানি আপনি এটি এরকম করতে পারেন তবে আমি নিশ্চিত নই যে এটি সর্বদা কাজ করবে কিনা ...

function admin_add_my_header() {
    header('X-UA-Compatible: IE=edge,chrome=1');    
}
add_action( 'admin_init', 'admin_add_my_header', 1 );

অ্যাডমিনের জন্য যাচাই করার জন্য টসচোর পরামর্শের ভিত্তিতে আপডেট উত্তর:

is_admin() || add_action('send_headers', function(){ 
    header('X-UA-Compatible: IE=edge,chrome=1'); 
}, 1);

2
আপনার এখনও ব্যবহার করা উচিত is_admin() || add_action( … ), কারণ আপনার যদি প্রয়োজন না হয় তবে নিবন্ধিত কলব্যাকের তালিকাটিকে দূষিত করার দরকার নেই।
ফুসিয়া

আকর্ষণীয় পয়েন্ট টসচো ... আমি প্রায় দশ বছর ধরে ওয়ার্ডপ্রেস সাইটগুলি তৈরি করে চলেছি এবং চিহ্ন বা চিহ্নটি ব্যবহার করার আগে আমি কখনও এই বিন্যাসটি দেখিনি। কয়েক বছর আগে শর্তগুলি কীভাবে সঠিকভাবে ফর্ম্যাট করা যায় সে সম্পর্কে আমি আসলে একটি প্রশ্ন জিজ্ঞাসা করেছি যদি আপনি এই পদ্ধতির যোগ করার মতো অনুভব করেন।
ব্রায়ান উইলিস

আপনার পরামর্শের ভিত্তিতে টসচো আমি আমার উত্তর আপডেট করেছি। আপনি কি বোঝাতে চেয়েছিলেন?
ব্রায়ান উইলিস

হ্যাঁ, ঠিক আছে। :)
ফুসিয়া

" send_headersপ্রতিবারের মত বিজয়ী হবে এবং পৃষ্ঠা ক্যাশে যাওয়ার পরে যুক্ত করা সত্ত্বেও এটি লোড হয়েছে কিনা তা নিশ্চিত করবে" - কেবলমাত্র send_headersআমার টেস্টে ডাব্লু 3 টোটাল ক্যাশে প্লাগইনগুলির দ্বারা ব্যবহৃত পৃষ্ঠার ক্যাচিং বা কোনও স্ট্যাটিক ক্যাচিংকে বীট করতে কাজ করে না তা লক্ষ করুন to যা কার্যকরভাবে সার্ভার স্তরে ওয়ার্ডপ্রেসকে বাইপাস করে।
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.