هل هذا مثال جيد على استخدام current_filter()
؟
<?php
add_filter("_my_filter", "common_function");
add_filter("_another_filter", "common_function");
function common_function(){
$currentFilter = current_filter();
switch ($currentFilter) {
case '_my_filter':
echo "Called by My Filter";
break;
case '_another_filter':
echo "Called by another filter";
break;
}
}
لذلك أنا أظن أن الدالة current_filter()
تستخدم للحصول على اسم المرشح الذي يحدث التنفيذ الحالي له؟
مرحبًا @ Raj Sekharan :
تبدو جيدة بالنسبة لي ، ولكن هل ترغب في معرفة الاستخدام الحالي فعلاً لسؤالك أو هل تريد أن تفهم من أين تحصل على current_filter()
؟
إذا كان الأخير ، فإليك ما يحدث في جميع وظائف معالجة الخطاف المختلفة ، على سبيل المثال do_action()
، apply_filters()
، do_action_ref_array()
، apply_filters_ref_array()
( كبير مبسطة ، بالطبع ):
<?php
function <process_hook>($hook, $value) {
global $wp_filter, $wp_current_filter;
$wp_current_filter[] = $hook; // "Push" the hook onto the stack.
$value = call_user_func($wp_filter[$hook]['function'],$value);
array_pop($wp_current_filter);
return $value;
}
ثم يتم استرداد كل ما current_filter()
من الخطاف الأخير "الضغط" على صفيف wp_current_filter
العمومي ، أي:
<?php
function current_filter() {
global $wp_current_filter;
return end( $wp_current_filter );
}
بشكل عام - نعم ، هذا استخدام صالح. إذا كنت أنت ، فسأقوم بتمرير وظائف مختلفة إلى المرشحات المختلفة واستخلاص الأجزاء الشائعة في الوظائف (الوظائف) الأخرى.
بهذه الطريقة ، ستقوم أي من وظائفك بعمل شيء واحد بالضبط.