এখানে এ সম্পর্কে কিছু এলোমেলো চিন্তা রয়েছে:
প্রশ্ন 1
আমরা ঠাকুরমার কাছে কত টাকা পাঠিয়েছি?
100 পৃষ্ঠা লোডের জন্য, আমরা তাকে 100 x $ 1 = $ 100 প্রেরণ করেছি।
এখানে আমরা আসলে 100 x do_action( 'init' )
কল বলতে চাইছি ।
এটির সাথে আমরা দুবার যুক্ত করেছিলাম তাতে কিছু যায় আসে না:
add_action( 'init','send_money_to_grandma' );
add_action( 'init','send_money_to_grandma' );
কারণ কলব্যাক এবং অগ্রাধিকারগুলি (ডিফল্ট 10) অভিন্ন ।
আমরা এটি পরীক্ষা করতে পারি যে কীভাবে এটি বিশ্বব্যাপী অ্যারে তৈরি করে তার add_action
জন্য কেবল একটি মোড়ক :add_filter
$wp_filter
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
global $wp_filter, $merged_filters;
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
$wp_filter[$tag][$priority][$idx] = array(
'function' => $function_to_add,
'accepted_args' => $accepted_args
);
unset( $merged_filters[ $tag ] );
return true;
}
তবে আমরা যদি অগ্রাধিকারটি পরিবর্তন করে থাকি:
add_action( 'init','send_money_to_grandma', 9 );
add_action( 'init','send_money_to_grandma', 10 );
তারপরে আমরা তাকে প্রতি পৃষ্ঠার লোডের জন্য 2 এক্স $ 1 বা 100 পৃষ্ঠা লোডের জন্য 200 ডলার পাঠাতাম।
কলব্যাক যেখানে আলাদা সেখানে একই:
add_action( 'init','send_money_to_grandma_1_dollar' );
add_action( 'init','send_money_to_grandma_also_1_dollar' );
প্রশ্ন # 2
আমরা যদি তা নিশ্চিত করতে চাই তবে আমরা কেবল ঠাকুরমা $ 1 প্রেরণ করব
আমরা যদি কেবলমাত্র পৃষ্ঠার লোডের জন্য একবার এটি পাঠাতে চাই , তবে এটি করা উচিত:
add_action( 'init','send_money_to_grandma' );
কারণ init
হুকটি কেবল একবারই চালিত হয়। আমাদের কাছে এমন অন্যান্য হুক থাকতে পারে যা প্রতি পৃষ্ঠা লোডে বহুবার জ্বলে ওঠে।
চল ডাকি:
add_action( 'someaction ','send_money_to_grandma' );
তবে someaction
পৃষ্ঠার লোডে 10 বার আগুন লাগলে কী ঘটে ?
আমরা send_money_to_grandma()
সাথে ফাংশন সামঞ্জস্য করতে পারে
function send_money_to_grandma()
{
if( ! did_action( 'someaction' ) )
internetofThings("send grandma","$1");
}
বা কাউন্টার হিসাবে স্ট্যাটিক ভেরিয়েবল ব্যবহার করুন :
function send_money_to_grandma()
{
static $counter = 0;
if( 0 === $counter++ )
internetofThings("send grandma","$1");
}
যদি আমরা কেবল এটি একবার চালাতে চাই (কখনও!), তবে আমরা wp_options
টেবিলের কোনও বিকল্প বিকল্প এপিআইয়ের মাধ্যমে নিবন্ধিত করতে পারি :
function send_money_to_grandma()
{
if( 'no' === get_option( 'sent_grandma_money', 'no' ) )
{
update_option( 'sent_grandma_money', 'yes' );
internetofThings( "send grandma","$1" );
}
}
যদি আমরা প্রতিদিন একবার তার টাকা পাঠাতে চাই, তবে আমরা ট্রান্সিয়েন্ট এপিআই ব্যবহার করতে পারি
function send_money_to_grandma()
{
if ( false === get_transient( 'sent_grandma_money' ) ) )
{
internetofThings( "send grandma","$1" );
set_transient( 'sent_grandma_money', 'yes', DAY_IN_SECONDS );
}
}
বা এমনকি ডাব্লুপি-ক্রোন ব্যবহার করুন।
মনে রাখবেন আপনার অজ্যাক্স কল থাকতে পারে। যেমন.
সেগুলির জন্য যাচাই করার উপায় রয়েছে যেমন with DOING_AJAX
পুনর্নির্দেশগুলিও থাকতে পারে, যা প্রবাহকে বাধা দিতে পারে।
তারপর আমরা শুধুমাত্র ব্যাকএন্ড থেকে সীমিত করতে চাইতে পারেন is_admin()
বা না: ! is_admin()
।
প্রশ্ন # 3
এটি কি এমন কিছু যা প্লাগইন বিকাশকারীরা উদ্বিগ্ন?
হ্যাঁ এটি গুরুত্বপূর্ণ।
আমরা যদি আমাদের দাদীকে খুব খুশি করতে চাই তবে আমরা তা করব:
add_action( 'all','send_money_to_grandma' );
তবে এটি পারফরম্যান্সের জন্য খুব খারাপ হবে ... এবং আমাদের মানিব্যাগ ;-)