it-swarm.com.de

Is dies a korrekte beispielverwendung von current_filter ()?

Ist dies ein gutes Beispiel für die Verwendung von 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;
  }
}

Vermutlich wird current_filter() verwendet, um den Namen des Filters abzurufen, für den die aktuelle Ausführung ausgeführt wird.

3
rsman

Hallo @ Raj Sekharan :

Sieht für mich gut aus, möchte aber die aktuelle Verwendung wirklich als Ihre Frage ansehen oder möchten Sie verstehen, woher current_filter() seine Informationen bezieht?

Wenn dies der Fall ist, ist dies im Grunde genommen das, was in allen verschiedenen Hook-Verarbeitungsfunktionen geschieht, z. do_action(), apply_filters(), do_action_ref_array(), apply_filters_ref_array() ( stark natürlich vereinfacht ):

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

Dann ruft current_filter() nur noch den letzten Hook ab, der auf das globale wp_current_filter-Array "geschoben" wurde , d.h.

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

Im Allgemeinen - ja, dies ist eine gültige Verwendung. Wenn ich Sie wäre, würde ich den verschiedenen Filtern verschiedene Funktionen übergeben und die gemeinsamen Teile in anderen Funktionen abstrahieren.

Auf diese Weise kann jede Ihrer Funktionen genau eines tun.

0
Nikolay