WordPress.org

Make WordPress Core

Ticket #4169: id-compat-fix.diff

File id-compat-fix.diff, 5.2 KB (added by rob1n, 7 years ago)
  • wp-includes/widgets.php

     
    6464                unset( $wp_registered_sidebars[$name] ); 
    6565} 
    6666 
    67 function register_sidebar_widget($name, $output_callback, $classname = '', $id = '') { 
     67function register_sidebar_widget( $name, $output_callback, $classname = '' ) { 
     68        $params = array_slice( func_get_args(), 3 ); 
     69        return wp_register_sidebar_widget( $name, sanitize_title( $name ), $output_callback, $classname, $params ); 
     70} 
     71 
     72function wp_register_sidebar_widget($name, $id, $output_callback, $classname = '', $params = array()) { 
    6873        global $wp_registered_widgets, $wp_register_widget_defaults; 
    6974 
    7075        // Compat 
     
    7479                else 
    7580                        $name = $name[0]; 
    7681        } 
     82         
     83        $id = sanitize_title( $id ); 
    7784 
    78         // Last resort -- this can be broken when names get translated so please provide a unique id. 
    79         if ( empty($id) ) 
    80                 $id = sanitize_title($name); 
    81  
    8285        if ( (!isset($classname) || empty($classname) || !is_string($classname)) && is_string($output_callback) ) 
    8386                        $classname = $output_callback; 
    8487 
     
    8790                'id' => $id, 
    8891                'callback' => $output_callback, 
    8992                'classname' => $classname, 
    90                 'params' => array_slice(func_get_args(), 4) 
     93                'params' => $params 
    9194        ); 
    9295 
    9396        if ( empty($output_callback) ) 
     
    102105        unregister_widget_control($id); 
    103106} 
    104107 
    105 function register_widget_control($name, $control_callback, $width = 300, $height = 200, $id = '') { 
     108function register_widget_control( $name, $control_callback, $width = 300, $height = 200 ) { 
     109        $params = array_slice( func_get_args(), 4 ); 
     110        return wp_register_widget_control( $name, sanitize_title( $name ), $control_callback, $width, $height, $params ); 
     111} 
     112 
     113function wp_register_widget_control($name, $id, $control_callback, $width = 300, $height = 200, $params = array()) { 
    106114        global $wp_registered_widget_controls, $wp_register_widget_defaults; 
    107115 
    108116        // Compat 
     
    112120                else 
    113121                        $name = $name[0]; 
    114122        } 
     123         
     124        $id = sanitize_title( $id ); 
    115125 
    116         if ( empty($id) ) 
    117                 $id = $name; 
    118  
    119         $id = sanitize_title($id); 
    120  
    121126        $width = (int) $width > 90 ? (int) $width + 60 : 360; 
    122127        $height = (int) $height > 60 ? (int) $height + 40 : 240; 
    123128 
     
    130135                        'callback' => $control_callback, 
    131136                        'width' => $width, 
    132137                        'height' => $height, 
    133                         'params' => array_slice(func_get_args(), 5) 
     138                        'params' => $params 
    134139                ); 
    135140} 
    136141 
     
    870875 
    871876        $wp_register_widget_defaults = true; 
    872877 
    873         register_sidebar_widget(__('Pages'), 'wp_widget_pages', 'widget_pages', 'pages'); 
    874         register_widget_control(__('Pages'), 'wp_widget_pages_control', 300, 90, 'pages'); 
    875         register_sidebar_widget(__('Calendar'), 'wp_widget_calendar', 'widget_calendar', 'calendar'); 
    876         register_widget_control(__('Calendar'), 'wp_widget_calendar_control', 300, 90, 'calendar'); 
    877         register_sidebar_widget(__('Archives'), 'wp_widget_archives', 'widget_archives', 'archives'); 
    878         register_widget_control(__('Archives'), 'wp_widget_archives_control', 300, 100, 'archives'); 
    879         register_sidebar_widget(__('Links'), 'wp_widget_links', 'widget_links', 'links'); 
    880         register_sidebar_widget(__('Meta'), 'wp_widget_meta', 'widget_meta', 'meta'); 
    881         register_widget_control(__('Meta'), 'wp_widget_meta_control', 300, 90, 'meta'); 
    882         register_sidebar_widget(__('Search'), 'wp_widget_search', 'widget_search', 'search'); 
    883         register_sidebar_widget(__('Categories'), 'wp_widget_categories', 'widget_categories', 'categories'); 
    884         register_widget_control(__('Categories'), 'wp_widget_categories_control', 300, 150, 'categories'); 
    885         register_sidebar_widget(__('Recent Posts'), 'wp_widget_recent_entries', 'widget_recent_entries', 'recent-posts'); 
    886         register_widget_control(__('Recent Posts'), 'wp_widget_recent_entries_control', 300, 90, 'recent-posts'); 
     878        wp_register_sidebar_widget(__('Pages'), 'pages', 'wp_widget_pages', 'widget_pages'); 
     879        wp_register_widget_control(__('Pages'), 'pages', 'wp_widget_pages_control', 300, 90); 
     880        wp_register_sidebar_widget(__('Calendar'), 'calendar', 'wp_widget_calendar', 'widget_calendar'); 
     881        wp_register_widget_control(__('Calendar'), 'calendar', 'wp_widget_calendar_control', 300, 90); 
     882        wp_register_sidebar_widget(__('Archives'), 'archives', 'wp_widget_archives', 'widget_archives'); 
     883        wp_register_widget_control(__('Archives'), 'archives', 'wp_widget_archives_control', 300, 100); 
     884        wp_register_sidebar_widget(__('Links'), 'links', 'wp_widget_links', 'widget_links'); 
     885        wp_register_sidebar_widget(__('Meta'), 'meta', 'wp_widget_meta', 'widget_meta'); 
     886        wp_register_widget_control(__('Meta'), 'meta', 'wp_widget_meta_control', 300, 90); 
     887        wp_register_sidebar_widget(__('Search'), 'search', 'wp_widget_search', 'widget_search'); 
     888        wp_register_sidebar_widget(__('Categories'), 'categories', 'wp_widget_categories', 'widget_categories'); 
     889        wp_register_widget_control(__('Categories'), 'categories', 'wp_widget_categories_control', 300, 150); 
     890        wp_register_sidebar_widget(__('Recent Posts'), 'recent-posts', 'wp_widget_recent_entries', 'widget_recent_entries'); 
     891        wp_register_widget_control(__('Recent Posts'), 'recent-posts', 'wp_widget_recent_entries_control', 300, 90); 
    887892        wp_widget_text_register(); 
    888893        wp_widget_rss_register(); 
    889894        wp_widget_recent_comments_register();