অ্যাড_ফিল্টার এবং প্রয়োগ_ফিল্টারগুলির মধ্যে পার্থক্য


17

আমি এখানে add_filter()এবং এর apply_filters()মধ্যে পার্থক্যের জন্য উপযুক্ত ব্যাখ্যা অনুসন্ধান করেছি তবে একটিও খুঁজে পেল না।

কেউ আমাকে কোনও তথ্য বা যুক্তি ব্যবহারের আগে add_filterবা apply_filtersএকটি প্রসঙ্গে বিবেচনা করতে হবে তা বলতে পারেন ।

এটি একটি অপরিহার্য এবং অন্যটি ব্যবহার করে না?

  • এটি কি ঠিক যে add_filterভেরিয়েবলের উপর মৃত্যুদন্ড কার্যকর হওয়ার অপেক্ষায় ফাংশনগুলির সারিতে কেবল একটি ফাংশন যুক্ত apply_filtersকরে এবং ক্রিয়াকলাপগুলি কার্যকরভাবে কার্যকর করে ?

  • এটিও কি সঠিক যে apply_filtersআর্গুমেন্টের সাথে ডাকা হলে (সঞ্চালনের জন্য ফাংশনটির নাম) ক্রিয়াকলাপে অন্য সমস্ত (যদি তাদের উপস্থিত থাকে) আগে এই ফাংশনটি সম্পাদন করবে?


2
এখানে এবং এখানে বিদ্যমান ডকুমেন্টেশনগুলি সম্পর্কে কী এটি আপনার পক্ষে পর্যাপ্তভাবে ব্যাখ্যা করে না?
t31os

3
আমি মনে করি এটি আসলে একটি ভাল প্রশ্ন। নতুন ওয়ার্ডপ্রেস দেব হিসাবে এটি একটি বিভ্রান্তিমূলক ধারণা হতে পারে।
শন

উত্তর:


26

নীচের বেশিরভাগটি কোডেক্সে পাওয়া যাবে :


apply_filters

ফিল্টার হুকের সাথে সংযুক্ত কলব্যাক ফাংশনগুলি এই ফাংশনটিতে $tagকল করে ডাকা হয়। এই ফাংশনটি কেবল using ট্যাগ প্যারামিটার ব্যবহার করে নির্দিষ্ট করা নতুন হুকের নাম সহ এই ফাংশনটি কল করে একটি নতুন ফিল্টার হুক তৈরি করতে ব্যবহার করা যেতে পারে।

$value = apply_filters( $tag, $value, $var_1, $var_2, ... );

সংক্ষেপে:
আপনি একটি প্রদত্ত ফিল্টারapply_filters করতে ব্যবহার করেন - মানটি নিজেই পাশাপাশি optionচ্ছিকভাবে ভেরিয়েবলের মাধ্যমে দেওয়া হয় । $value$var_1$var_n


add_filter

একটি নির্দিষ্ট ফিল্টার ক্রিয়ায় একটি ফাংশন হুক করুন।

add_filter( $tag, $function_to_add, $priority, $accepted_args );

সংক্ষেপে:
আপনি add_filterপ্রদত্ত ফিল্টার ক্রিয়া ( $tag) -এর জন্য একটি কাস্টম ফাংশন হুক করতে ব্যবহার করেন যা আপনি apply_filtersআগে তৈরি করতে পারেন (বা এটি একটি অন্তর্নির্মিত ফিল্টার ক্রিয়া ছিল বা একটি প্লাগইন / আপনার থিম থেকে উদ্ভূত)।


সুতরাং, এখানে একটি কাল্পনিক উদাহরণ:

function print_initials( $name ) {

    if ( ! is_string( $name ) ) {
        return;
    }

    $fragments = explode( ' ', $name );

    /**
     * Filter wether to print initials in reverse order.
     *
     * @param bool $reverse Print initials in reverse order?
     */
    if ( apply_filters( 'reverse_initials', FALSE ) ) {
        $fragments = array_reverse( $fragments );
    }

    foreach ( $fragments as $f ) {
        echo substr( $f, 0, 1 );
    }
}

print_initials( 'Some Guy' ); // outputs: SG

add_filter( 'reverse_initials', '__return_true' );

print_initials( 'Some Guy' ); // outputs: GS

এখন, আমরা যদি আমাদের ফাংশনটিকে কেবল যেমন কল করি তবে আদ্যক্ষরগুলি বাম থেকে ডানে মুদ্রিত হয় - কারণ এটিই আমরা ডিফল্ট আচরণ হিসাবে সংজ্ঞায়িত করেছি।

দ্বিতীয়বার, আমরা বিপরীত ক্রমে সূক্ষ্মগুলি পাই — কারণ __return_trueআমাদের ফিল্টার ক্রিয়ায় আবদ্ধ ফিল্টার ফাংশনটি সর্বদা ফিরে আসে TRUEএবং এভাবে আদ্যক্ষরগুলি ডান থেকে বামে আউটপুট হয়ে যায়।


3
এটি দুর্দান্ত উত্তর এবং আপনি কীভাবে ফিল্টারগুলিকে ওভাররাইড করতে পারেন তা দেখায়। ধন্যবাদ।
শোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.