WordPress.org

Make WordPress Core

Ticket #17242: death-to-constants-and-lame-functions.diff

File death-to-constants-and-lame-functions.diff, 16.2 KB (added by nacin, 2 years ago)
  • wp-includes/theme.php

     
    11111111/** 
    11121112 * Add callbacks for image header display. 
    11131113 * 
    1114  * The parameter $header_callback callback will be required to display the 
    1115  * content for the 'wp_head' action. The parameter $admin_header_callback 
    1116  * callback will be added to Custom_Image_Header class and that will be added 
    1117  * to the 'admin_menu' action. 
    1118  * 
    11191114 * @since 2.1.0 
    1120  * @uses Custom_Image_Header Sets up for $admin_header_callback for administration panel display. 
    11211115 * 
    11221116 * @param callback $header_callback Call on 'wp_head' action. 
    11231117 * @param callback $admin_header_callback Call on custom header administration screen. 
    11241118 * @param callback $admin_image_div_callback Output a custom header image div on the custom header administration screen. Optional. 
    11251119 */ 
    11261120function add_custom_image_header( $header_callback, $admin_header_callback, $admin_image_div_callback = '' ) { 
    1127         if ( ! empty( $header_callback ) ) 
    1128                 add_action('wp_head', $header_callback); 
    1129  
    1130         $support = array( 'callback' => $header_callback ); 
    1131         $theme_support = get_theme_support( 'custom-header' ); 
    1132         if ( ! empty( $theme_support ) && is_array( $theme_support[ 0 ] ) ) 
    1133                 $support = array_merge( $theme_support[ 0 ], $support ); 
    1134         add_theme_support( 'custom-header',  $support ); 
    1135         add_theme_support( 'custom-header-uploads' ); 
    1136  
    1137         if ( ! is_admin() ) 
    1138                 return; 
    1139  
    1140         global $custom_image_header; 
    1141  
    1142         require_once( ABSPATH . 'wp-admin/custom-header.php' ); 
    1143         $custom_image_header = new Custom_Image_Header( $admin_header_callback, $admin_image_div_callback ); 
    1144         add_action( 'admin_menu', array( &$custom_image_header, 'init' ) ); 
     1121        _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support(\'custom-header\', $args)' ); 
     1122        return add_theme_support( 'custom-header', array( 
     1123                'callback' => $header_callback, 
     1124                'admin-header-callback' => $admin_header_callback, 
     1125                'admin-image-div-callback' => $admin_image_div_callback, 
     1126        ) ); 
    11451127} 
    11461128 
    11471129/** 
     
    11531135 * @return bool Whether support was removed. 
    11541136 */ 
    11551137function remove_custom_image_header() { 
    1156         if ( ! current_theme_supports( 'custom-header' ) ) 
    1157                 return false; 
    1158  
    1159         $callback = get_theme_support( 'custom-header' ); 
    1160         remove_action( 'wp_head', $callback[0]['callback'] ); 
    1161         _remove_theme_support( 'custom-header' ); 
    1162         remove_theme_support( 'custom-header-uploads' ); 
    1163  
    1164         if ( is_admin() ) { 
    1165                 remove_action( 'admin_menu', array( &$GLOBALS['custom_image_header'], 'init' ) ); 
    1166                 unset( $GLOBALS['custom_image_header'] ); 
    1167         } 
    1168  
    1169         return true; 
     1138        _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support(\'custom-header\')' ); 
     1139        return remove_theme_support( 'custom-header' ); 
    11701140} 
    11711141 
    11721142/** 
     
    12671237 * @param callback $admin_image_div_callback Output a custom background image div on the custom background administration screen. Optional. 
    12681238 */ 
    12691239function add_custom_background( $header_callback = '', $admin_header_callback = '', $admin_image_div_callback = '' ) { 
    1270         if ( isset( $GLOBALS['custom_background'] ) ) 
    1271                 return; 
    1272  
    1273         if ( empty( $header_callback ) ) 
    1274                 $header_callback = '_custom_background_cb'; 
    1275  
    1276         add_action( 'wp_head', $header_callback ); 
    1277  
    1278         add_theme_support( 'custom-background', array( 'callback' => $header_callback ) ); 
    1279  
    1280         if ( ! is_admin() ) 
    1281                 return; 
    1282         require_once( ABSPATH . 'wp-admin/custom-background.php' ); 
    1283         $GLOBALS['custom_background'] = new Custom_Background( $admin_header_callback, $admin_image_div_callback ); 
    1284         add_action( 'admin_menu', array( &$GLOBALS['custom_background'], 'init' ) ); 
     1240        return add_theme_support( 'custom-background', array( 
     1241                'callback' => $header_callback, 
     1242                'admin-header-callback' => $admin_header_callback, 
     1243                'admin-image-div-callback' => $admin_image_div_callback, 
     1244        ) ); 
    12851245} 
    12861246 
    12871247/** 
     
    12931253 * @return bool Whether support was removed. 
    12941254 */ 
    12951255function remove_custom_background() { 
    1296         if ( ! current_theme_supports( 'custom-background' ) ) 
    1297                 return false; 
    1298  
    1299         $callback = get_theme_support( 'custom-background' ); 
    1300         remove_action( 'wp_head', $callback[0]['callback'] ); 
    1301         _remove_theme_support( 'custom-background' ); 
    1302  
    1303         if ( is_admin() ) { 
    1304                 remove_action( 'admin_menu', array( &$GLOBALS['custom_background'], 'init' ) ); 
    1305                 unset( $GLOBALS['custom_background'] ); 
    1306         } 
    1307  
    1308         return true; 
     1256        _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support(\'custom-background\')' ); 
     1257        return remove_theme_support( 'custom-background' ); 
    13091258} 
    13101259 
    13111260/** 
     
    14181367        global $_wp_theme_features; 
    14191368 
    14201369        if ( func_num_args() == 1 ) 
    1421                 $_wp_theme_features[$feature] = true; 
     1370                $args = true; 
    14221371        else 
    1423                 $_wp_theme_features[$feature] = array_slice( func_get_args(), 1 ); 
     1372                $args = array_slice( func_get_args(), 1 ); 
    14241373 
    1425         if ( $feature == 'post-formats' && is_array( $_wp_theme_features[$feature][0] ) ) 
    1426                 $_wp_theme_features[$feature][0] = array_intersect( $_wp_theme_features[$feature][0], array_keys( get_post_format_slugs() ) ); 
     1374        switch ( $feature ) { 
     1375                case 'post-formats' : 
     1376                        if ( is_array( $args[0] ) ) 
     1377                                $args[0] = array_intersect( $args[0], array_keys( get_post_format_slugs() ) ); 
     1378                        break; 
     1379 
     1380                case 'custom-header-uploads' : 
     1381                        return add_theme_support( 'custom-header', array( 'uploads' => true ) ); 
     1382                        break; 
     1383 
     1384                case 'custom-header' : 
     1385                        $defaults = array( 
     1386                                'default-image' => '', 
     1387                                'random-default' => false, 
     1388                                'width' => 0, 
     1389                                'height' => 0, 
     1390                                'suggested-width' => 0, 
     1391                                'suggested-height' => 0, 
     1392                                'flex-height' => false, 
     1393                                'flex-width' => false, 
     1394                                'default-text-color' => '', 
     1395                                'header-text' => true, 
     1396                                'uploads' => true, 
     1397                                'callback' => '', 
     1398                                'admin-header-callback' => '', 
     1399                                'admin-image-div-callback' => '', 
     1400                        ); 
     1401 
     1402                        // Merge in data from previous add_theme_support() calls. 
     1403                        if ( isset( $_wp_theme_features['custom-header'] ) ) 
     1404                                $defaults = wp_parse_args( $_wp_theme_features['custom-header'][0], $defaults ); 
     1405 
     1406                        $_args = $args[0]; 
     1407                        $args[0] = wp_parse_args( $args[0], $defaults ); 
     1408                        unset( $args[0]['__jit'] ); 
     1409 
     1410                        if ( defined( 'NO_HEADER_TEXT' ) ) 
     1411                                $args[0]['header-text'] = ! NO_HEADER_TEXT; 
     1412                        elseif ( ! empty( $args[0]['header-text'] ) || isset( $_args['__jit'] ) ) 
     1413                                define( 'NO_HEADER_TEXT', empty( $args[0]['header-text'] ) ); 
     1414 
     1415                        if ( defined( 'HEADER_IMAGE_WIDTH' ) ) 
     1416                                $args[0]['width'] = (int) HEADER_IMAGE_WIDTH; 
     1417                        elseif ( ! empty( $args[0]['width'] ) || isset( $_args['__jit'] ) ) 
     1418                                define( 'HEADER_IMAGE_WIDTH', (int) $args[0]['width'] ); 
     1419 
     1420                        if ( defined( 'HEADER_IMAGE_HEIGHT' ) ) 
     1421                                $args[0]['height'] = (int) HEADER_IMAGE_HEIGHT; 
     1422                        elseif ( ! empty( $args[0]['height'] ) || isset( $_args['__jit'] ) ) 
     1423                                define( 'HEADER_IMAGE_HEIGHT', (int) $args[0]['height'] ); 
     1424 
     1425                        if ( defined( 'HEADER_TEXTCOLOR' ) ) 
     1426                                $args[0]['default-text-color'] = HEADER_TEXTCOLOR; 
     1427                        elseif ( $args[0]['default-text-color'] || isset( $_args['__jit'] ) ) 
     1428                                define( 'HEADER_TEXTCOLOR', $args[0]['default-text-color'] ); 
     1429 
     1430                        if ( defined( 'HEADER_IMAGE' ) ) 
     1431                                $args[0]['default-image'] = HEADER_IMAGE; 
     1432 
     1433                        if ( ! empty( $args[0]['default-image'] ) ) 
     1434                                $args[0]['random-default'] = false; 
     1435 
     1436                        if ( ! defined( 'HEADER_IMAGE' ) && ( isset( $_args['default-image'] ) || isset( $_args['random-default'] ) ) ) 
     1437                                define( 'HEADER_IMAGE', $args[0]['default-image'] ); 
     1438 
     1439                        if ( ! empty( $args[0]['width'] ) ) 
     1440                                $args[0]['flex-width'] = $args[0]['suggested-width'] = $args[0]['max-width'] = false; 
     1441 
     1442                        if ( ! empty( $args[0]['height'] ) ) 
     1443                                $args[0]['flex-height'] = $args[0]['suggested-height'] = false; 
     1444 
     1445                        if ( $args[0]['callback'] ) 
     1446                                add_action( 'wp_head', $args[0]['callback'] ); 
     1447 
     1448                        break; 
     1449 
     1450                case 'custom-background' : 
     1451                        $defaults = array( 
     1452                                'callback' => '', 
     1453                                'admin-header-callback' => '', 
     1454                                'admin-image-div-callback' => '', 
     1455                        ); 
     1456                        if ( isset( $_wp_theme_features['custom-background'] ) ) 
     1457                                $defaults = wp_parse_args( $_wp_theme_features['custom-background'][0], $defaults ); 
     1458 
     1459                        $_args = $args; 
     1460                        $args[0] = wp_parse_args( $args[0], $defaults ); 
     1461                        if ( empty( $args[0]['callback'] ) ) 
     1462                                $args[0]['callback'] = '_custom_background_cb'; 
     1463 
     1464                        add_action( 'wp_head', $args[0]['callback'] ); 
     1465 
     1466                        break; 
     1467        } 
     1468 
     1469        $_wp_theme_features[ $feature ] = $args; 
    14271470} 
    14281471 
     1472add_action( 'wp_loaded', '_custom_header_background_just_in_time' ); 
     1473 
     1474function _custom_header_background_just_in_time() { 
     1475        global $custom_image_header, $custom_background; 
     1476 
     1477        if ( current_theme_supports( 'custom-header' ) ) { 
     1478                // In case any constants were defined after an add_custom_image_header() call, re-run. 
     1479                add_theme_support( 'custom-header', array( '__jit' => true ) ); 
     1480 
     1481                if ( is_admin() ) { 
     1482                        $args = get_theme_support( 'custom-header' ); 
     1483                        require_once( ABSPATH . 'wp-admin/custom-header.php' ); 
     1484                        $custom_image_header = new Custom_Image_Header( $args[0]['admin-header-callback'], $args[0]['admin-image-div-callback'] ); 
     1485                } 
     1486        } 
     1487 
     1488        if ( is_admin() && current_theme_supports( 'custom-background' ) ) { 
     1489                $args = get_theme_support( 'custom-header' ); 
     1490                require_once( ABSPATH . 'wp-admin/custom-background.php' ); 
     1491                $custom_background = new Custom_Background( $args[0]['admin-header-callback'], $args[0]['admin-image-div-callback'] ); 
     1492        }                
     1493} 
     1494 
    14291495/** 
    14301496 * Gets the theme support arguments passed when registering that support 
    14311497 * 
     
    14541520 */ 
    14551521function remove_theme_support( $feature ) { 
    14561522        // Blacklist: for internal registrations not used directly by themes. 
    1457         if ( in_array( $feature, array( 'custom-background', 'custom-header', 'editor-style', 'widgets', 'menus' ) ) ) 
     1523        if ( in_array( $feature, array( 'custom-background', 'editor-style', 'widgets', 'menus' ) ) ) 
    14581524                return false; 
     1525 
    14591526        return _remove_theme_support( $feature ); 
    14601527} 
    14611528 
     
    14681535function _remove_theme_support( $feature ) { 
    14691536        global $_wp_theme_features; 
    14701537 
    1471         if ( ! isset( $_wp_theme_features[$feature] ) ) 
     1538        switch ( $feature ) { 
     1539                case 'custom-header-uploads' : 
     1540                        if ( ! isset( $_wp_theme_features['custom-header'] ) ) 
     1541                                return false; 
     1542                        add_theme_support( 'custom-header', array( 'uploads' => false ) ); 
     1543                        return; // Do not continue - custom-header-uploads no longer exists. 
     1544        } 
     1545 
     1546        if ( ! isset( $_wp_theme_features[ $feature ] ) ) 
    14721547                return false; 
    1473         unset( $_wp_theme_features[$feature] ); 
     1548 
     1549        switch ( $feature ) { 
     1550                case 'custom-header' : 
     1551                        $support = get_theme_support( 'custom-header' ); 
     1552                        if ( $support[0]['callback'] ) 
     1553                                remove_action( 'wp_head', $support[0]['callback'] ); 
     1554                        unset( $GLOBALS['custom_image_header'] ); 
     1555                        break; 
     1556 
     1557                case 'custom-header' : 
     1558                        $support = get_theme_support( 'custom-background' ); 
     1559                        remove_action( 'wp_head', $support[0]['callback'] ); 
     1560                        unset( $GLOBALS['custom_background'] ); 
     1561                        break; 
     1562        } 
     1563 
     1564        unset( $_wp_theme_features[ $feature ] ); 
    14741565        return true; 
    14751566} 
    14761567 
     
    14841575function current_theme_supports( $feature ) { 
    14851576        global $_wp_theme_features; 
    14861577 
     1578        if ( 'custom-header-uploads' == $feature ) 
     1579                return current_theme_supports( 'custom-header', 'uploads' ); 
     1580 
    14871581        if ( !isset( $_wp_theme_features[$feature] ) ) 
    14881582                return false; 
    14891583 
  • wp-content/themes/twentyten/functions.php

     
    103103        // This theme allows users to set a custom background 
    104104        add_custom_background(); 
    105105 
    106         // Your changeable header business starts here 
    107         if ( ! defined( 'HEADER_TEXTCOLOR' ) ) 
    108                 define( 'HEADER_TEXTCOLOR', '' ); 
     106        add_theme_support( 'custom-header', array( 
     107                'width' => 940, 
     108                'height' => 198, 
     109                'admin-header-callback' => 'twentyten_admin_header_style', 
     110                'header-text' => false, 
     111                'default-image' => '%s/images/headers/path.jpg', 
     112        ) ); 
    109113 
    110         // No CSS, just IMG call. The %s is a placeholder for the theme template directory URI. 
    111         if ( ! defined( 'HEADER_IMAGE' ) ) 
    112                 define( 'HEADER_IMAGE', '%s/images/headers/path.jpg' ); 
    113  
    114         // The height and width of your custom header. You can hook into the theme's own filters to change these values. 
    115         // Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values. 
    116         define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) ); 
    117         define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) ); 
    118  
    119114        // We'll be using post thumbnails for custom header images on posts and pages. 
    120115        // We want them to be 940 pixels wide by 198 pixels tall. 
    121116        // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php. 
    122         set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true ); 
     117        set_post_thumbnail_size( 940, 198, true ); 
    123118 
    124         // Don't support text inside the header image. 
    125         if ( ! defined( 'NO_HEADER_TEXT' ) ) 
    126                 define( 'NO_HEADER_TEXT', true ); 
    127  
    128         // Add a way for the custom header to be styled in the admin panel that controls 
    129         // custom headers. See twentyten_admin_header_style(), below. 
    130         add_custom_image_header( '', 'twentyten_admin_header_style' ); 
    131  
    132119        // ... and thus ends the changeable header business. 
    133120 
    134121        // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI. 
  • wp-content/themes/twentytwelve/functions.php

     
    7676                'flex-width' => true, 
    7777                'max-width' => apply_filters( 'twentytwelve_header_image_max_width', 2000 ), 
    7878                'suggested-width' => apply_filters( 'twentytwelve_header_image_width', 960 ), 
     79                'callback' => 'twentytwelve_header_style', 
     80                'admin-header-callback' => 'twentytwelve_admin_header_style', 
     81                'admin-image-div-callback' => 'twentytwelve_admin_header_image', 
    7982        ); 
    8083        add_theme_support( 'custom-header', $header_args ); 
    81         add_custom_image_header( 'twentytwelve_header_style', 'twentytwelve_admin_header_style', 'twentytwelve_admin_header_image' ); 
    8284 
    8385        // The default header text color 
    8486        define( 'HEADER_TEXTCOLOR', '444' ); 
  • wp-admin/custom-header.php

     
    7171        function __construct($admin_header_callback, $admin_image_div_callback = '') { 
    7272                $this->admin_header_callback = $admin_header_callback; 
    7373                $this->admin_image_div_callback = $admin_image_div_callback; 
     74 
     75                add_action( 'admin_menu', array( $this, 'init' ) ); 
    7476        } 
    7577 
    7678        /** 
     79         * Destructor - Remove admin menu hook when theme support is removed. 
     80         */ 
     81        function __destruct() { 
     82                remove_action( 'admin_menu', array( $this, 'init' ) ); 
     83        } 
     84 
     85        /** 
    7786         * Set up the hooks for the Custom Header admin page. 
    7887         * 
    7988         * @since 2.1.0 
     
    533542 
    534543<tr valign="top"> 
    535544<th scope="row"><?php _e( 'Preview' ); ?></th> 
    536 <td > 
     545<td> 
    537546        <?php if ( $this->admin_image_div_callback ) { 
    538547          call_user_func( $this->admin_image_div_callback ); 
    539548        } else { 
     
    800809         * @since 2.1.0 
    801810         */ 
    802811        function step_3() { 
    803                 check_admin_referer('custom-header-crop-image'); 
    804                 if ( ! current_theme_supports( 'custom-header-uploads' ) ) 
     812                check_admin_referer( 'custom-header-crop-image' ); 
     813 
     814                if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) 
    805815                        wp_die( __( 'Cheatin&#8217; uh?' ) ); 
    806816 
    807817                if ( $_POST['oitar'] > 1 ) { 
     
    903913                if ( ! current_user_can('edit_theme_options') ) 
    904914                        wp_die(__('You do not have permission to customize headers.')); 
    905915                $step = $this->step(); 
    906                 if ( 1 == $step ) 
     916                if ( 1 == $step || ! $_POST ) 
    907917                        $this->step_1(); 
    908918                elseif ( 2 == $step ) 
    909919                        $this->step_2(); 
  • wp-admin/custom-background.php

     
    5353        function __construct($admin_header_callback = '', $admin_image_div_callback = '') { 
    5454                $this->admin_header_callback = $admin_header_callback; 
    5555                $this->admin_image_div_callback = $admin_image_div_callback; 
     56 
     57                add_action( 'admin_menu', array( $this, 'init' ) ); 
    5658        } 
    5759 
    5860        /** 
     61         * Destructor - Remove admin menu hook when theme support is removed. 
     62         */ 
     63        function __destruct() { 
     64                remove_action( 'admin_menu', array( $this, 'init' ) ); 
     65        } 
     66 
     67        /** 
    5968         * Set up the hooks for the Custom Background admin page. 
    6069         * 
    6170         * @since 3.0.0