it-swarm-ko.tech

이것은 올바른 예입니다 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()은 마지막 훅 "push"를 전역 wp_current_filter 배열에 검색합니다. 즉,

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

일반적으로 네, 이것은 유효한 사용법입니다. 내가 당신이라면 다른 필터를 다른 기능으로 전달하고 다른 기능의 공통 부분을 추상화합니다.

이 방법은 당신의 기능 중 하나가 정확히 한 가지를 할 것입니다.

0
Nikolay