WordPress.org

Make WordPress Core

Ticket #901: functionsdotphp2.patch

File functionsdotphp2.patch, 1.4 KB (added by michel v, 9 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                }