WordPress.org

Make WordPress Core

Ticket #901: functionsdotphp2.patch

File functionsdotphp2.patch, 1.4 KB (added by michel v, 13 years ago)
  • wp-includes/functions.php

    diff -u -r1.269 functions.php
     
    871871function apply_filters($tag, $string) {
    872872        global $wp_filter;
    873873       
    874         $args = array_slice(func_get_args(), 3);
     874        $args = array_slice(func_get_args(), 2);
    875875
    876876        merge_filters($tag);
    877877       
     
    879879                foreach ($wp_filter[$tag] as $priority => $functions) {
    880880                        if (!is_null($functions)) {
    881881                                foreach($functions as $function) {
    882                                         $string = call_user_func_array($function, array($string) + $args);
     882                                        $accepted_args = 1;
     883                                        $all_args = array_merge(array($string), $args);
     884
     885                                        if (!is_array($function)) {
     886                                                $args_marker = strrpos($function, ':');
     887                                                if ($args_marker > 0) {
     888                                                        $accepted_args = intval(substr($function, $args_marker+1));
     889                                                        $function = substr($function, 0, $args_marker);
     890                                                }
     891                                        } else {
     892                                                $args_marker = strrpos($function[1], ':');
     893                                                if ($args_marker > 0) {
     894                                                        $accepted_args = intval(substr($function[1], $args_marker+1));
     895                                                        $function[1] = substr($function[1], 0, $args_marker);
     896                                                }
     897                                        }
     898
     899                                        if ($accepted_args > 0) {
     900                                                $args = array_slice($all_args, 0, $accepted_args);
     901                                        } elseif($accepted_args == 0) {
     902                                                $args = NULL;
     903                                        } else {
     904                                                $args = $all_args;
     905                                        }
     906
     907                                        $string = call_user_func_array($function, $args);
    883908                                }
    884909                        }
    885910                }