WordPress.org

Make WordPress Core

Ticket #26516: 26516.diff

File 26516.diff, 5.3 KB (added by obenland, 6 years ago)
  • wp-includes/theme.php

     
    15681568        if ( ! isset( $_wp_theme_features[ $feature ] ) )
    15691569                return false;
    15701570
    1571         if ( func_num_args() <= 1 )
    1572                 return $_wp_theme_features[ $feature ];
    1573 
    15741571        $args = array_slice( func_get_args(), 1 );
    1575         switch ( $feature ) {
    1576                 case 'custom-header' :
    1577                 case 'custom-background' :
    1578                         if ( isset( $_wp_theme_features[ $feature ][0][ $args[0] ] ) )
    1579                                 return $_wp_theme_features[ $feature ][0][ $args[0] ];
    1580                         return false;
    1581                         break;
    1582                 default :
    1583                         return $_wp_theme_features[ $feature ];
    1584                         break;
     1572        if ( ! empty( $args ) ) {
     1573                switch ( $feature ) {
     1574                        case 'custom-header' :
     1575                        case 'custom-background' :
     1576                                if ( isset( $_wp_theme_features[ $feature ][0][ $args[0] ] ) )
     1577                                        return $_wp_theme_features[ $feature ][0][ $args[0] ];
     1578                                return false;
     1579                                break;
     1580                }
     1581        }
     1582
     1583        $feature_args = $_wp_theme_features[ $feature ];
     1584        if ( is_array( $feature_args ) ) {
     1585                $feature_args = array_merge( $feature_args, $_wp_theme_features[ $feature ][0] );
    15851586        }
     1587
     1588        /**
     1589         * Filter whether the theme support for a specific feature.
     1590         *
     1591         * The dynamic portion of the hook name, $feature, refers to
     1592         * the specific theme feature. Possible values include 'post-formats',
     1593         * 'post-thumbnails', 'menus', 'automatic-feed-links', and 'html5'.
     1594         *
     1595         * @since 3.9.0
     1596         *
     1597         * @param array|bool $feature_args The array of extra arguments, or true if there are none.
     1598         * @param array      $args         Array of arguments for the feature.
     1599         */
     1600        return apply_filters( "get_theme_support-{$feature}", $feature_args, $args );
    15861601}
    15871602
    15881603/**
     
    16111626 * @since 3.1.0
    16121627 */
    16131628function _remove_theme_support( $feature ) {
    1614         global $_wp_theme_features;
    1615 
    16161629        switch ( $feature ) {
    16171630                case 'custom-header-uploads' :
    1618                         if ( ! isset( $_wp_theme_features['custom-header'] ) )
     1631                        if ( ! current_theme_supports( 'custom-header' ) )
    16191632                                return false;
    16201633                        add_theme_support( 'custom-header', array( 'uploads' => false ) );
    16211634                        return; // Do not continue - custom-header-uploads no longer exists.
    16221635        }
    16231636
    1624         if ( ! isset( $_wp_theme_features[ $feature ] ) )
     1637        if ( ! current_theme_supports( $feature ) )
    16251638                return false;
    16261639
    16271640        switch ( $feature ) {
    16281641                case 'custom-header' :
    16291642                        if ( ! did_action( 'wp_loaded' ) )
    16301643                                break;
    1631                         $support = get_theme_support( 'custom-header' );
    1632                         if ( $support[0]['wp-head-callback'] )
    1633                                 remove_action( 'wp_head', $support[0]['wp-head-callback'] );
     1644                        remove_action( 'wp_head', get_theme_support( 'custom-header', 'wp-head-callback' ) );
    16341645                        remove_action( 'admin_menu', array( $GLOBALS['custom_image_header'], 'init' ) );
    16351646                        unset( $GLOBALS['custom_image_header'] );
    16361647                        break;
     
    16381649                case 'custom-background' :
    16391650                        if ( ! did_action( 'wp_loaded' ) )
    16401651                                break;
    1641                         $support = get_theme_support( 'custom-background' );
    1642                         remove_action( 'wp_head', $support[0]['wp-head-callback'] );
     1652                        remove_action( 'wp_head', get_theme_support( 'custom-background', 'wp-head-callback' ) );
    16431653                        remove_action( 'admin_menu', array( $GLOBALS['custom_background'], 'init' ) );
    16441654                        unset( $GLOBALS['custom_background'] );
    16451655                        break;
    16461656        }
    16471657
    1648         unset( $_wp_theme_features[ $feature ] );
     1658        unset( $GLOBALS['_wp_theme_features'][ $feature ] );
    16491659        return true;
    16501660}
    16511661
     
    16571667 * @return boolean
    16581668 */
    16591669function current_theme_supports( $feature ) {
    1660         global $_wp_theme_features;
    1661 
    16621670        if ( 'custom-header-uploads' == $feature )
    16631671                return current_theme_supports( 'custom-header', 'uploads' );
    16641672
    1665         if ( !isset( $_wp_theme_features[$feature] ) )
     1673        if ( ! get_theme_support( $feature ) )
    16661674                return false;
    16671675
    16681676        // If no args passed then no extra checks need be performed
     
    16761684                        // post-thumbnails can be registered for only certain content/post types by passing
    16771685                        // an array of types to add_theme_support(). If no array was passed, then
    16781686                        // any type is accepted
    1679                         if ( true === $_wp_theme_features[$feature] )  // Registered for all types
     1687                        if ( true === get_theme_support( $feature ) )  // Registered for all types
    16801688                                return true;
    16811689                        $content_type = $args[0];
    1682                         return in_array( $content_type, $_wp_theme_features[$feature][0] );
     1690                        return in_array( $content_type, get_theme_support( $feature ) );
    16831691                        break;
    16841692
    16851693                case 'html5':
     
    16901698                        // Specific areas of HTML5 support *must* be passed via an array to add_theme_support()
    16911699
    16921700                        $type = $args[0];
    1693                         return in_array( $type, $_wp_theme_features[$feature][0] );
     1701                        return in_array( $type, get_theme_support( $feature ) );
    16941702                        break;
    16951703
    16961704                case 'custom-header':
     
    16981706                        // specific custom header and background capabilities can be registered by passing
    16991707                        // an array to add_theme_support()
    17001708                        $header_support = $args[0];
    1701                         return ( isset( $_wp_theme_features[$feature][0][$header_support] ) && $_wp_theme_features[$feature][0][$header_support] );
     1709                        return get_theme_support( $feature, $header_support );
    17021710                        break;
    17031711        }
    17041712
     
    17161724         * @param array  $args    Array of arguments for the feature.
    17171725         * @param string $feature The theme feature.
    17181726         */
    1719         return apply_filters( "current_theme_supports-{$feature}", true, $args, $_wp_theme_features[$feature] );
     1727        return apply_filters( "current_theme_supports-{$feature}", true, $args, get_theme_support( $feature ) );
    17201728}
    17211729
    17221730/**