it-swarm.asia

Current_filter () 'nin Doğru Bir Örnek Kullanımı mı?

Bu, current_filter() kullanımının iyi bir örneği midir?

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

Öyleyse, mevcut uygulamanın gerçekleştiği filtrenin adını almak için current_filter() 'nin kullanıldığını tahmin ediyorum.

3
rsman

Merhaba @ Raj Sekharan :

Bana çok yakışmış, ama şu anki kullanımın gerçekten sorunuzu olduğunu bilmek mi istiyorsunuz, yoksa current_filter() adresinin nereden bilgi aldığını anlamak mı istiyorsunuz?

İkincisi ise, temel olarak, tüm farklı kanca işleme fonksiyonlarında, örneğin; do_action(), apply_filters(), do_action_ref_array(), apply_filters_ref_array() (büyük ölçüdesadeleştirilmiş, tabii ki):

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

O zaman, current_filter() 'ın yaptığı tek şey, son __""' un son halini global wp_current_filter dizisine almak, yani:

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

Genel olarak - evet, bu geçerli bir kullanımdır. Yerinde olsam, farklı filtrelere farklı fonksiyonlar iletir ve diğer fonksiyonlardaki ortak parçaları soyutlardım.

Bu şekilde fonksiyonlarınızdan herhangi biri tam olarak bir şey yapacaktır.

0
Nikolay