it-swarm-id.com

Apakah Ini Contoh Penggunaan yang Benar Dari current_filter ()?

Apakah ini contoh yang baik dari penggunaan 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;
  }
}

Jadi saya menebak current_filter() digunakan untuk mendapatkan nama filter yang eksekusi saat ini terjadi?

3
rsman

Hai @ Raj Sekharan :

Terlihat bagus untuk saya, tetapi apakah ingin mengetahui penggunaan saat ini benar-benar pertanyaan Anda atau apakah Anda ingin memahami dari mana current_filter() mendapatkan informasi itu?

Jika yang terakhir, inilah yang pada dasarnya terjadi di semua fungsi pemrosesan kait yang berbeda, mis. do_action(), apply_filters(), do_action_ref_array(), apply_filters_ref_array() ( sangat disederhanakan, tentunya ):

<?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;
}

Maka semua yang dilakukan current_filter() adalah mengambil kait terakhir "didorong" ke array wp_current_filter global, yaitu:

<?php
function current_filter() {
  global $wp_current_filter;
  return end( $wp_current_filter );
}
5
MikeSchinkel

Secara umum — ya, ini adalah penggunaan yang valid. Jika saya jadi Anda, saya akan melewati fungsi yang berbeda ke filter yang berbeda dan abstrak bagian-bagian umum dalam fungsi lain.

Dengan cara ini, salah satu fungsi Anda akan melakukan tepat satu hal.

0
Nikolay