it-swarm-eu.dev

Je to správné příklad použití Current_filter ()?

Je to dobrý příklad použití 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;
  }
}

Takže hádám, že current_filter() se používá k získání názvu filtru, ke kterému se provádí aktuální provedení?

3
rsman

Ahoj @ Raj Sekharan :

Vypadá to dobře pro mě, ale chce znát současné použití opravdu vaši otázku nebo chcete pochopit, kde current_filter() dostane informace?

Je-li to druhé, je to v podstatě to, co se děje ve všech různých funkcích zpracování háčků, např. do_action(), apply_filters(), do_action_ref_array(), apply_filters_ref_array() ( velmi samozřejmě zjednodušeno ):

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

Pak vše, co current_filter() dělá, je načíst poslední háček "push" na globální pole wp_current_filter, tj .:

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

Obecně - ano, toto je platné použití. Kdybych byl tebou, předával bych různé funkce různým filtrům a abstrakoval společné části v jiných funkcích.

Tímto způsobem každá z vašich funkcí udělá přesně jednu věc.

0
Nikolay