Ticket #23387: setting-priority.patch

File setting-priority.patch, 1.8 KB (added by alexmansfield, 4 months ago)

Adds priority option to individual settings

  • wp-admin/includes/template.php

     
    10291029 * @param string $section The slug-name of the section of the settings page in which to show the box (default, ...). 
    10301030 * @param array $args Additional arguments 
    10311031 */ 
    1032 function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array()) { 
     1032function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array(), $priority = 10) { 
    10331033        global $wp_settings_fields; 
    10341034 
    10351035        if ( 'misc' == $page ) { 
     
    10491049        if ( !isset($wp_settings_fields[$page][$section]) ) 
    10501050                $wp_settings_fields[$page][$section] = array(); 
    10511051 
    1052         $wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args); 
     1052        $wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args, 'priority' => $priority); 
    10531053} 
    10541054 
    10551055/** 
     
    11051105 
    11061106        if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) ) 
    11071107                return; 
     1108                 
     1109        uasort($wp_settings_fields[$page][$section], 'compare_priority');  
    11081110 
    11091111        foreach ( (array) $wp_settings_fields[$page][$section] as $field ) { 
    11101112                echo '<tr valign="top">'; 
     
    11191121        } 
    11201122} 
    11211123 
     1124/**  
     1125 * Helper function to compare two objects by priority.  
     1126 *  
     1127 * @since 3.4.0  
     1128 *  
     1129 * @param object $a Object A.  
     1130 * @param object $b Object B.  
     1131 */  
     1132function compare_priority( $a, $b ) {  
     1133        $ap = $a['priority'];  
     1134        $bp = $b['priority'];  
     1135         
     1136        if ( $ap == $bp )  
     1137                return 0;  
     1138        return ( $ap > $bp ) ? 1 : -1;  
     1139} 
     1140 
    11221141/** 
    11231142 * Register a settings error to be displayed to the user 
    11241143 *