it-swarm.asia

هل هذا مثال على الاستخدام الصحيح لـ current_filter ()؟

هل هذا مثال جيد على استخدام 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() تستخدم للحصول على اسم المرشح الذي يحدث التنفيذ الحالي له؟

3
rsman

مرحبًا @ 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 );
}
5
MikeSchinkel

بشكل عام - نعم ، هذا استخدام صالح. إذا كنت أنت ، فسأقوم بتمرير وظائف مختلفة إلى المرشحات المختلفة واستخلاص الأجزاء الشائعة في الوظائف (الوظائف) الأخرى.

بهذه الطريقة ، ستقوم أي من وظائفك بعمل شيء واحد بالضبط.

0
Nikolay