WordPress.org

Make WordPress Core

Ticket #20249: 20249.diff

File 20249.diff, 18.9 KB (added by nacin, 2 years ago)
  • wp-includes/theme.php

     
    897897 * Retrieve text color for custom header. 
    898898 * 
    899899 * @since 2.1.0 
    900  * @uses HEADER_TEXTCOLOR 
    901900 * 
    902901 * @return string 
    903902 */ 
    904903function get_header_textcolor() { 
    905         $default = defined('HEADER_TEXTCOLOR') ? HEADER_TEXTCOLOR : ''; 
    906  
    907         return get_theme_mod('header_textcolor', $default); 
     904        return get_theme_mod('header_textcolor', get_theme_support( 'custom-header', 'default-text-color' ) ); 
    908905} 
    909906 
    910907/** 
     
    920917 * Retrieve header image for custom header. 
    921918 * 
    922919 * @since 2.1.0 
    923  * @uses HEADER_IMAGE 
    924920 * 
    925921 * @return string 
    926922 */ 
    927923function get_header_image() { 
    928         $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : ''; 
    929         $url = get_theme_mod( 'header_image', $default ); 
     924        $url = get_theme_mod( 'header_image', get_theme_support( 'custom-header', 'default-image' ) ); 
    930925 
    931926        if ( 'remove-header' == $url ) 
    932927                return false; 
     
    966961                        if ( 'random-default-image' == $header_image_mod ) { 
    967962                                $headers = $_wp_default_headers; 
    968963                        } else { 
    969                                 $is_random = get_theme_support( 'custom-header' ); 
    970                                 if ( isset( $is_random[ 0 ] ) && !empty( $is_random[ 0 ][ 'random-default' ] ) ) 
     964                                if ( current_theme_supports( 'custom-header', 'random-default' ) ) 
    971965                                        $headers = $_wp_default_headers; 
    972966                        } 
    973967                } 
     
    10061000 * is chosen, and theme turns on random headers with add_theme_support(). 
    10071001 * 
    10081002 * @since 3.2.0 
    1009  * @uses HEADER_IMAGE 
    10101003 * 
    10111004 * @param string $type The random pool to use. any|default|uploaded 
    10121005 * @return boolean 
    10131006 */ 
    10141007function is_random_header_image( $type = 'any' ) { 
    1015         $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : ''; 
    1016         $header_image_mod = get_theme_mod( 'header_image', $default ); 
     1008        $header_image_mod = get_theme_mod( 'header_image', get_theme_support( 'custom-header', 'default-image' ) ); 
    10171009 
    10181010        if ( 'any' == $type ) { 
    10191011                if ( 'random-default-image' == $header_image_mod || 'random-uploaded-image' == $header_image_mod || ( '' != get_random_header_image() && empty( $header_image_mod ) ) ) 
     
    10751067 * 
    10761068 * @return object 
    10771069 */ 
    1078 function get_current_header_data() { 
     1070function get_custom_header() { 
    10791071        $data = is_random_header_image()? _get_random_header_data() : get_theme_mod( 'header_image_data' ); 
    10801072        $default = array( 
    10811073                'url'           => '', 
    10821074                'thumbnail_url' => '', 
    1083                 'width'         => '', 
    1084                 'height'        => '', 
     1075                'width'         => get_theme_suppport( 'custom-header', 'width' ), 
     1076                'height'        => get_theme_suppport( 'custom-header', 'height' ), 
    10851077        ); 
    10861078        return (object) wp_parse_args( $data, $default ); 
    10871079} 
    10881080 
    10891081/** 
    1090  * Get the header image width. 
    1091  * 
    1092  * @since 3.4.0 
    1093  * 
    1094  * @return int 
    1095  */ 
    1096 function get_header_image_width() { 
    1097         return empty( get_current_header_data()->width )? HEADER_IMAGE_WIDTH : get_current_header_data()->width; 
    1098 } 
    1099  
    1100 /** 
    1101  * Get the header image height. 
    1102  * 
    1103  * @since 3.4.0 
    1104  * 
    1105  * @return int 
    1106  */ 
    1107 function get_header_image_height() { 
    1108         return empty( get_current_header_data()->height )? HEADER_IMAGE_HEIGHT : get_current_header_data()->height; 
    1109 } 
    1110  
    1111 /** 
    11121082 * Add callbacks for image header display. 
    11131083 * 
    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  * 
    11191084 * @since 2.1.0 
    1120  * @uses Custom_Image_Header Sets up for $admin_header_callback for administration panel display. 
     1085 * @deprecated 3.4.0 
     1086 * @deprecated Use add_theme_support('custom-header', $args) 
     1087 * @see add_theme_support() 
    11211088 * 
    11221089 * @param callback $header_callback Call on 'wp_head' action. 
    11231090 * @param callback $admin_header_callback Call on custom header administration screen. 
    11241091 * @param callback $admin_image_div_callback Output a custom header image div on the custom header administration screen. Optional. 
    11251092 */ 
    11261093function 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' ) ); 
     1094        _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support(\'custom-header\', $args)' ); 
     1095        return add_theme_support( 'custom-header', array( 
     1096                'callback' => $header_callback, 
     1097                'admin-header-callback' => $admin_header_callback, 
     1098                'admin-image-div-callback' => $admin_image_div_callback, 
     1099        ) ); 
    11451100} 
    11461101 
    11471102/** 
    11481103 * Remove image header support. 
    11491104 * 
    11501105 * @since 3.1.0 
    1151  * @see add_custom_image_header() 
     1106 * @deprecated 3.4.0 
     1107 * @deprecated Use remove_theme_support('custom-header') 
     1108 * @see remove_theme_support() 
    11521109 * 
    11531110 * @return bool Whether support was removed. 
    11541111 */ 
    11551112function 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; 
     1113        _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support(\'custom-header\')' ); 
     1114        return remove_theme_support( 'custom-header' ); 
    11701115} 
    11711116 
    11721117/** 
     
    12141159 * @return string 
    12151160 */ 
    12161161function get_background_image() { 
    1217         $default = defined('BACKGROUND_IMAGE') ? BACKGROUND_IMAGE : ''; 
    1218  
    1219         return get_theme_mod('background_image', $default); 
     1162        return get_theme_mod('background_image', get_theme_support( 'custom-background', 'default-image' ) ); 
    12201163} 
    12211164 
    12221165/** 
     
    12321175 * Retrieve value for custom background color. 
    12331176 * 
    12341177 * @since 3.0.0 
    1235  * @uses BACKGROUND_COLOR 
    12361178 * 
    12371179 * @return string 
    12381180 */ 
    12391181function get_background_color() { 
    1240         $default = defined('BACKGROUND_COLOR') ? BACKGROUND_COLOR : ''; 
    1241  
    1242         return get_theme_mod('background_color', $default); 
     1182        return get_theme_mod('background_color', get_theme_support( 'custom-background', 'default-color' ) ); 
    12431183} 
    12441184 
    12451185/** 
     
    12671207 * @param callback $admin_image_div_callback Output a custom background image div on the custom background administration screen. Optional. 
    12681208 */ 
    12691209function 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' ) ); 
     1210        return add_theme_support( 'custom-background', array( 
     1211                'callback' => $header_callback, 
     1212                'admin-header-callback' => $admin_header_callback, 
     1213                'admin-image-div-callback' => $admin_image_div_callback, 
     1214        ) ); 
    12851215} 
    12861216 
    12871217/** 
     
    12931223 * @return bool Whether support was removed. 
    12941224 */ 
    12951225function 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; 
     1226        _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support(\'custom-background\')' ); 
     1227        return remove_theme_support( 'custom-background' ); 
    13091228} 
    13101229 
    13111230/** 
     
    14181337        global $_wp_theme_features; 
    14191338 
    14201339        if ( func_num_args() == 1 ) 
    1421                 $_wp_theme_features[$feature] = true; 
     1340                $args = true; 
    14221341        else 
    1423                 $_wp_theme_features[$feature] = array_slice( func_get_args(), 1 ); 
     1342                $args = array_slice( func_get_args(), 1 ); 
    14241343 
    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() ) ); 
     1344        switch ( $feature ) { 
     1345                case 'post-formats' : 
     1346                        if ( is_array( $args[0] ) ) 
     1347                                $args[0] = array_intersect( $args[0], array_keys( get_post_format_slugs() ) ); 
     1348                        break; 
     1349 
     1350                case 'custom-header-uploads' : 
     1351                        return add_theme_support( 'custom-header', array( 'uploads' => true ) ); 
     1352                        break; 
     1353 
     1354                case 'custom-header' : 
     1355                        $defaults = array( 
     1356                                'default-image' => '', 
     1357                                'random-default' => false, 
     1358                                'width' => 0, 
     1359                                'height' => 0, 
     1360                                'suggested-width' => 0, 
     1361                                'suggested-height' => 0, 
     1362                                'flex-height' => false, 
     1363                                'flex-width' => false, 
     1364                                'default-text-color' => '', 
     1365                                'header-text' => true, 
     1366                                'uploads' => true, 
     1367                                'callback' => '', 
     1368                                'admin-header-callback' => '', 
     1369                                'admin-image-div-callback' => '', 
     1370                        ); 
     1371 
     1372                        // Merge in data from previous add_theme_support() calls. 
     1373                        if ( isset( $_wp_theme_features['custom-header'] ) ) 
     1374                                $defaults = wp_parse_args( $_wp_theme_features['custom-header'][0], $defaults ); 
     1375 
     1376                        $_args = $args[0]; 
     1377                        $args[0] = wp_parse_args( $args[0], $defaults ); 
     1378                        unset( $args[0]['__jit'] ); 
     1379 
     1380                        if ( defined( 'NO_HEADER_TEXT' ) ) 
     1381                                $args[0]['header-text'] = ! NO_HEADER_TEXT; 
     1382                        elseif ( ! empty( $args[0]['header-text'] ) || isset( $_args['__jit'] ) ) 
     1383                                define( 'NO_HEADER_TEXT', empty( $args[0]['header-text'] ) ); 
     1384 
     1385                        if ( defined( 'HEADER_IMAGE_WIDTH' ) ) 
     1386                                $args[0]['width'] = (int) HEADER_IMAGE_WIDTH; 
     1387                        elseif ( ! empty( $args[0]['width'] ) || isset( $_args['__jit'] ) ) 
     1388                                define( 'HEADER_IMAGE_WIDTH', (int) $args[0]['width'] ); 
     1389 
     1390                        if ( defined( 'HEADER_IMAGE_HEIGHT' ) ) 
     1391                                $args[0]['height'] = (int) HEADER_IMAGE_HEIGHT; 
     1392                        elseif ( ! empty( $args[0]['height'] ) || isset( $_args['__jit'] ) ) 
     1393                                define( 'HEADER_IMAGE_HEIGHT', (int) $args[0]['height'] ); 
     1394 
     1395                        if ( defined( 'HEADER_TEXTCOLOR' ) ) 
     1396                                $args[0]['default-text-color'] = HEADER_TEXTCOLOR; 
     1397                        elseif ( $args[0]['default-text-color'] || isset( $_args['__jit'] ) ) 
     1398                                define( 'HEADER_TEXTCOLOR', $args[0]['default-text-color'] ); 
     1399 
     1400                        if ( defined( 'HEADER_IMAGE' ) ) 
     1401                                $args[0]['default-image'] = HEADER_IMAGE; 
     1402 
     1403                        if ( ! empty( $args[0]['default-image'] ) ) 
     1404                                $args[0]['random-default'] = false; 
     1405 
     1406                        if ( ! defined( 'HEADER_IMAGE' ) 
     1407                                && ( isset( $_args['default-image'] ) || isset( $_args['random-default'] ) || isset( $_args['__jit'] ) ) ) 
     1408                                        define( 'HEADER_IMAGE', $args[0]['default-image'] ); 
     1409 
     1410                        if ( ! empty( $args[0]['width'] ) ) 
     1411                                $args[0]['flex-width'] = $args[0]['suggested-width'] = $args[0]['max-width'] = false; 
     1412 
     1413                        if ( ! empty( $args[0]['height'] ) ) 
     1414                                $args[0]['flex-height'] = $args[0]['suggested-height'] = false; 
     1415 
     1416                        break; 
     1417 
     1418                case 'custom-background' : 
     1419                        $defaults = array( 
     1420                                'default-image' => '', 
     1421                                'default-color' => '', 
     1422                                'callback' => '', 
     1423                                'admin-header-callback' => '', 
     1424                                'admin-image-div-callback' => '', 
     1425                        ); 
     1426                        if ( isset( $_wp_theme_features['custom-background'] ) ) 
     1427                                $defaults = wp_parse_args( $_wp_theme_features['custom-background'][0], $defaults ); 
     1428 
     1429                        $_args = $args[0]; 
     1430                        $args[0] = wp_parse_args( $args[0], $defaults ); 
     1431 
     1432                        if ( defined( 'BACKGROUND_COLOR' ) ) 
     1433                                $args[0]['default-color'] = BACKGROUND_COLOR; 
     1434                        elseif ( $args[0]['default-color'] || isset( $_args['__jit'] ) ) 
     1435                                define( 'BACKGROUND_COLOR', $args[0]['default-color'] ); 
     1436 
     1437                        if ( defined( 'BACKGROUND_IMAGE' ) ) 
     1438                                $args[0]['default-image'] = BACKGROUND_HEADER; 
     1439                        elseif ( $args[0]['default-image'] || isset( $_args['__jit'] ) ) 
     1440                                define( 'BACKGROUND_IMAGE', $args[0]['default-image'] ); 
     1441 
     1442                        if ( empty( $args[0]['callback'] ) ) 
     1443                                $args[0]['callback'] = '_custom_background_cb'; 
     1444 
     1445                        break; 
     1446        } 
     1447 
     1448        $_wp_theme_features[ $feature ] = $args; 
    14271449} 
    14281450 
    14291451/** 
     1452 * Registers the internal custom header and background routines. 
     1453 * 
     1454 * @since 3.4.0 
     1455 * @access private 
     1456 */ 
     1457function _custom_header_background_just_in_time() { 
     1458        global $custom_image_header, $custom_background; 
     1459 
     1460        if ( current_theme_supports( 'custom-header' ) ) { 
     1461                // In case any constants were defined after an add_custom_image_header() call, re-run. 
     1462                add_theme_support( 'custom-header', array( '__jit' => true ) ); 
     1463 
     1464                $args = get_theme_support( 'custom-header' ); 
     1465                if ( $args[0]['callback'] ) 
     1466                        add_action( 'wp_head', $args[0]['callback'] ); 
     1467 
     1468                if ( is_admin() ) { 
     1469                        require_once( ABSPATH . 'wp-admin/custom-header.php' ); 
     1470                        $custom_image_header = new Custom_Image_Header( $args[0]['admin-header-callback'], $args[0]['admin-image-div-callback'] ); 
     1471                } 
     1472        } 
     1473 
     1474        if ( current_theme_supports( 'custom-background' ) ) { 
     1475                // In case any constants were defined after an add_custom_background() call, re-run. 
     1476                add_theme_support( 'custom-background', array( '__jit' => true ) ); 
     1477 
     1478                $args = get_theme_support( 'custom-background' ); 
     1479                add_action( 'wp_head', $args[0]['callback'] ); 
     1480 
     1481                if ( is_admin() ) { 
     1482                        require_once( ABSPATH . 'wp-admin/custom-background.php' ); 
     1483                        $custom_background = new Custom_Background( $args[0]['admin-header-callback'], $args[0]['admin-image-div-callback'] ); 
     1484                } 
     1485        }                
     1486} 
     1487add_action( 'wp_loaded', '_custom_header_background_just_in_time' ); 
     1488 
     1489/** 
    14301490 * Gets the theme support arguments passed when registering that support 
    14311491 * 
    14321492 * @since 3.1 
     
    14351495 */ 
    14361496function get_theme_support( $feature ) { 
    14371497        global $_wp_theme_features; 
    1438         if ( !isset( $_wp_theme_features[$feature] ) ) 
     1498        if ( ! isset( $_wp_theme_features[ $feature ] ) ) 
    14391499                return false; 
    1440         else 
    1441                 return $_wp_theme_features[$feature]; 
     1500 
     1501        if ( func_num_args() <= 1 ) 
     1502                return $_wp_theme_features[ $feature ]; 
     1503 
     1504        $args = array_slice( func_get_args(), 1 ); 
     1505        switch ( $feature ) { 
     1506                case 'custom-header' : 
     1507                case 'custom-background' : 
     1508                        if ( isset( $_wp_theme_features[ $feature ][ $args[0] ] ) ) 
     1509                                return $_wp_theme_features[ $feature ][ $args[0] ]; 
     1510                        return false; 
     1511                        break; 
     1512                default : 
     1513                        return $_wp_theme_features[ $feature ]; 
     1514                        break; 
     1515        } 
    14421516} 
    14431517 
    14441518/** 
     
    14541528 */ 
    14551529function remove_theme_support( $feature ) { 
    14561530        // Blacklist: for internal registrations not used directly by themes. 
    1457         if ( in_array( $feature, array( 'custom-background', 'custom-header', 'editor-style', 'widgets', 'menus' ) ) ) 
     1531        if ( in_array( $feature, array( 'editor-style', 'widgets', 'menus' ) ) ) 
    14581532                return false; 
     1533 
    14591534        return _remove_theme_support( $feature ); 
    14601535} 
    14611536 
     
    14681543function _remove_theme_support( $feature ) { 
    14691544        global $_wp_theme_features; 
    14701545 
    1471         if ( ! isset( $_wp_theme_features[$feature] ) ) 
     1546        switch ( $feature ) { 
     1547                case 'custom-header-uploads' : 
     1548                        if ( ! isset( $_wp_theme_features['custom-header'] ) ) 
     1549                                return false; 
     1550                        add_theme_support( 'custom-header', array( 'uploads' => false ) ); 
     1551                        return; // Do not continue - custom-header-uploads no longer exists. 
     1552        } 
     1553 
     1554        if ( ! isset( $_wp_theme_features[ $feature ] ) ) 
    14721555                return false; 
    1473         unset( $_wp_theme_features[$feature] ); 
     1556 
     1557        switch ( $feature ) { 
     1558                case 'custom-header' : 
     1559                        $support = get_theme_support( 'custom-header' ); 
     1560                        if ( $support[0]['callback'] ) 
     1561                                remove_action( 'wp_head', $support[0]['callback'] ); 
     1562                        unset( $GLOBALS['custom_image_header'] ); 
     1563                        break; 
     1564 
     1565                case 'custom-header' : 
     1566                        $support = get_theme_support( 'custom-background' ); 
     1567                        remove_action( 'wp_head', $support[0]['callback'] ); 
     1568                        unset( $GLOBALS['custom_background'] ); 
     1569                        break; 
     1570        } 
     1571 
     1572        unset( $_wp_theme_features[ $feature ] ); 
    14741573        return true; 
    14751574} 
    14761575 
     
    14841583function current_theme_supports( $feature ) { 
    14851584        global $_wp_theme_features; 
    14861585 
     1586        if ( 'custom-header-uploads' == $feature ) 
     1587                return current_theme_supports( 'custom-header', 'uploads' ); 
     1588 
    14871589        if ( !isset( $_wp_theme_features[$feature] ) ) 
    14881590                return false; 
    14891591 
  • 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 
     
    531540 
    532541<tr valign="top"> 
    533542<th scope="row"><?php _e( 'Preview' ); ?></th> 
    534 <td > 
     543<td> 
    535544        <?php if ( $this->admin_image_div_callback ) { 
    536545          call_user_func( $this->admin_image_div_callback ); 
    537546        } else { 
     
    791800         * @since 2.1.0 
    792801         */ 
    793802        function step_3() { 
    794                 check_admin_referer('custom-header-crop-image'); 
    795                 if ( ! current_theme_supports( 'custom-header-uploads' ) ) 
     803                check_admin_referer( 'custom-header-crop-image' ); 
     804 
     805                if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) 
    796806                        wp_die( __( 'Cheatin&#8217; uh?' ) ); 
    797807 
    798808                if ( $_POST['oitar'] > 1 ) { 
     
    894904                if ( ! current_user_can('edit_theme_options') ) 
    895905                        wp_die(__('You do not have permission to customize headers.')); 
    896906                $step = $this->step(); 
    897                 if ( 1 == $step ) 
     907                if ( 1 == $step || ! $_POST ) 
    898908                        $this->step_1(); 
    899909                elseif ( 2 == $step ) 
    900910                        $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 
     
    226235</tr> 
    227236<?php endif; ?> 
    228237 
    229 <?php if ( defined( 'BACKGROUND_IMAGE' ) ) : // Show only if a default background image exists ?> 
     238<?php if ( get_theme_support( 'custom-background', 'default-image' ) ) : ?> 
    230239<tr valign="top"> 
    231240<th scope="row"><?php _e('Restore Original Image'); ?></th> 
    232241<td>