135 | | global $wp_filter, $merged_filters, $wp_current_filter; |
136 | | |
137 | | $args = array(); |
138 | | $wp_current_filter[] = $tag; |
139 | | |
140 | | // Do 'all' actions first |
141 | | if ( isset($wp_filter['all']) ) { |
142 | | $args = func_get_args(); |
143 | | _wp_call_all_hook($args); |
144 | | } |
145 | | |
146 | | if ( !isset($wp_filter[$tag]) ) { |
147 | | array_pop($wp_current_filter); |
148 | | return $value; |
149 | | } |
150 | | |
151 | | // Sort |
152 | | if ( !isset( $merged_filters[ $tag ] ) ) { |
153 | | ksort($wp_filter[$tag]); |
154 | | $merged_filters[ $tag ] = true; |
155 | | } |
156 | | |
157 | | reset( $wp_filter[ $tag ] ); |
158 | | |
159 | | if ( empty($args) ) |
160 | | $args = func_get_args(); |
161 | | |
162 | | do { |
163 | | foreach( (array) current($wp_filter[$tag]) as $the_ ) |
164 | | if ( !is_null($the_['function']) ){ |
165 | | $args[1] = $value; |
166 | | $value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args'])); |
167 | | } |
168 | | |
169 | | } while ( next($wp_filter[$tag]) !== false ); |
170 | | |
171 | | array_pop( $wp_current_filter ); |
172 | | |
173 | | return $value; |
| 136 | $args = func_get_args(); |
| 137 | $tag = array_shift( $args ); |
| 138 | return _wp_call_hook(true, $tag, $args); |
194 | | global $wp_filter, $merged_filters, $wp_current_filter; |
195 | | |
196 | | $wp_current_filter[] = $tag; |
197 | | |
198 | | // Do 'all' actions first |
199 | | if ( isset($wp_filter['all']) ) { |
200 | | $all_args = func_get_args(); |
201 | | _wp_call_all_hook($all_args); |
202 | | } |
203 | | |
204 | | if ( !isset($wp_filter[$tag]) ) { |
205 | | array_pop($wp_current_filter); |
206 | | return $args[0]; |
207 | | } |
208 | | |
209 | | // Sort |
210 | | if ( !isset( $merged_filters[ $tag ] ) ) { |
211 | | ksort($wp_filter[$tag]); |
212 | | $merged_filters[ $tag ] = true; |
213 | | } |
214 | | |
215 | | reset( $wp_filter[ $tag ] ); |
216 | | |
217 | | do { |
218 | | foreach( (array) current($wp_filter[$tag]) as $the_ ) |
219 | | if ( !is_null($the_['function']) ) |
220 | | $args[0] = call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); |
221 | | |
222 | | } while ( next($wp_filter[$tag]) !== false ); |
223 | | |
224 | | array_pop( $wp_current_filter ); |
225 | | |
226 | | return $args[0]; |
| 159 | return _wp_call_hook( true, $tag, $args ); |
353 | | global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; |
354 | | |
355 | | if ( ! isset($wp_actions) ) |
356 | | $wp_actions = array(); |
357 | | |
358 | | if ( ! isset($wp_actions[$tag]) ) |
359 | | $wp_actions[$tag] = 1; |
360 | | else |
361 | | ++$wp_actions[$tag]; |
362 | | |
363 | | $wp_current_filter[] = $tag; |
364 | | |
365 | | // Do 'all' actions first |
366 | | if ( isset($wp_filter['all']) ) { |
367 | | $all_args = func_get_args(); |
368 | | _wp_call_all_hook($all_args); |
369 | | } |
370 | | |
371 | | if ( !isset($wp_filter[$tag]) ) { |
372 | | array_pop($wp_current_filter); |
373 | | return; |
374 | | } |
375 | | |
376 | | $args = array(); |
377 | | if ( is_array($arg) && 1 == count($arg) && isset($arg[0]) && is_object($arg[0]) ) // array(&$this) |
378 | | $args[] =& $arg[0]; |
379 | | else |
380 | | $args[] = $arg; |
381 | | for ( $a = 2; $a < func_num_args(); $a++ ) |
382 | | $args[] = func_get_arg($a); |
383 | | |
384 | | // Sort |
385 | | if ( !isset( $merged_filters[ $tag ] ) ) { |
386 | | ksort($wp_filter[$tag]); |
387 | | $merged_filters[ $tag ] = true; |
388 | | } |
389 | | |
390 | | reset( $wp_filter[ $tag ] ); |
391 | | |
392 | | do { |
393 | | foreach ( (array) current($wp_filter[$tag]) as $the_ ) |
394 | | if ( !is_null($the_['function']) ) |
395 | | call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); |
396 | | |
397 | | } while ( next($wp_filter[$tag]) !== false ); |
398 | | |
399 | | array_pop($wp_current_filter); |
| 286 | $args = func_get_args(); |
| 287 | $tag = array_shift( $args ); |
| 288 | _wp_call_hook(false, $tag, $args); |
439 | | global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; |
440 | | |
441 | | if ( ! isset($wp_actions) ) |
442 | | $wp_actions = array(); |
443 | | |
444 | | if ( ! isset($wp_actions[$tag]) ) |
445 | | $wp_actions[$tag] = 1; |
446 | | else |
447 | | ++$wp_actions[$tag]; |
448 | | |
449 | | $wp_current_filter[] = $tag; |
450 | | |
451 | | // Do 'all' actions first |
452 | | if ( isset($wp_filter['all']) ) { |
453 | | $all_args = func_get_args(); |
454 | | _wp_call_all_hook($all_args); |
455 | | } |
456 | | |
457 | | if ( !isset($wp_filter[$tag]) ) { |
458 | | array_pop($wp_current_filter); |
459 | | return; |
460 | | } |
461 | | |
462 | | // Sort |
463 | | if ( !isset( $merged_filters[ $tag ] ) ) { |
464 | | ksort($wp_filter[$tag]); |
465 | | $merged_filters[ $tag ] = true; |
466 | | } |
467 | | |
468 | | reset( $wp_filter[ $tag ] ); |
469 | | |
470 | | do { |
471 | | foreach( (array) current($wp_filter[$tag]) as $the_ ) |
472 | | if ( !is_null($the_['function']) ) |
473 | | call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); |
474 | | |
475 | | } while ( next($wp_filter[$tag]) !== false ); |
476 | | |
477 | | array_pop($wp_current_filter); |
| 328 | _wp_call_hook( false, $tag, $args ); |
| 555 | * Call a hook |
| 556 | * |
| 557 | * @since 3.1 |
| 558 | * @access private |
| 559 | * @param bool $filter True: apply_filter, False: do_action |
| 560 | * @param string $tag The name of the filter hook. |
| 561 | * @param array $args The arguments supplied to the functions hooked on <tt>$tag</tt> |
| 562 | * @return mixed first element of $args, filtered if applicable |
| 563 | */ |
| 564 | function _wp_call_hook($filter, $tag, $args) { |
| 565 | global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; |
| 566 | |
| 567 | $filter || isset( $wp_actions[$tag] ) && $wp_actions[$tag]++ || $wp_actions[$tag] = 1; |
| 568 | |
| 569 | $wp_current_filter[] = $tag; // hook stack |
| 570 | |
| 571 | // Do 'all' actions first |
| 572 | isset( $wp_filter['all'] ) && _wp_call_all_hook( array_merge( array($tag), $args ) ); |
| 573 | |
| 574 | if ( isset( $wp_filter[$tag] ) ) { |
| 575 | // Sort |
| 576 | isset( $merged_filters[$tag] ) || $merged_filters[$tag] = ksort( $wp_filter[$tag] ); |
| 577 | |
| 578 | for ( $prio = reset( $wp_filter[$tag] ); false !== $prio ; $prio = next( $wp_filter[$tag] ) ) { |
| 579 | foreach( $prio as $the_ ) { |
| 580 | if ( is_null( $the_['function'] ) ) |
| 581 | continue; |
| 582 | |
| 583 | $callback = $the_['function']; |
| 584 | $parameter = array_slice( $args, 0, $the_['accepted_args'] ); |
| 585 | |
| 586 | $filter |
| 587 | ? $args[0] = call_user_func_array( $callback, $parameter) |
| 588 | : call_user_func_array( $callback, $parameter); |
| 589 | } |
| 590 | } |
| 591 | } |
| 592 | |
| 593 | array_pop( $wp_current_filter ); // hook stack |
| 594 | return isset( $args[0] ) ? $args[0] : null; |
| 595 | } |
| 596 | |
| 597 | /** |