Frage

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

Also rate ich current_filter() Wird verwendet, um den Namen des Filters zu erhalten, für den die aktuelle Ausführung stattfindet?

War es hilfreich?

Lösung

Hi @Raj sekharan:

Sieht gut für mich aus, möchte aber die aktuelle Verwendung wirklich Ihre Frage kennen oder möchten Sie verstehen, wo current_filter() bekommt seine Informationen von?

Wenn letztere, hier im Grunde genommen, was in all den verschiedenen Hakenverarbeitungsfunktionen passiert, z. B. do_action(), apply_filters(), do_action_ref_array(), apply_filters_ref_array() (sehr 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 das alles current_filter() Ruft der letzte Haken ab "gedrückt" auf die globale wp_current_filter Array, dh:

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

Andere Tipps

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

Auf diese Weise wird eine Ihrer Funktionen genau eine Sache tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top