WordPress.org

Make WordPress Core

Ticket #36666: 36666.4.diff

File 36666.4.diff, 3.4 KB (added by jmichaelward, 5 years ago)
  • src/wp-includes/theme.php

     
    15361536
    15371537        switch ( $feature ) {
    15381538                case 'post-thumbnails':
    1539                         // All post types are already supported.
    1540                         if ( true === get_theme_support( 'post-thumbnails' ) ) {
    1541                                 return;
     1539                        // All post types are already supported or no arguments were passed.
     1540                        if ( $args === get_theme_support( 'post-thumbnails' ) || true === $args ) {
     1541                                $args = array( get_post_types_by_support( 'thumbnail' ) );
     1542                                break;
    15421543                        }
    15431544
    15441545                        /*
     
    18321833 * @since 3.0.0
    18331834 * @see add_theme_support()
    18341835 * @param string $feature the feature being added
     1836 * @param array $args Optional arguments
    18351837 * @return bool|void Whether feature was removed.
    18361838 */
    1837 function remove_theme_support( $feature ) {
     1839function remove_theme_support( $feature, $args = array() ) {
    18381840        // Blacklist: for internal registrations not used directly by themes.
    18391841        if ( in_array( $feature, array( 'editor-style', 'widgets', 'menus' ) ) )
    18401842                return false;
    18411843
    1842         return _remove_theme_support( $feature );
     1844        return _remove_theme_support( $feature, $args );
    18431845}
    1844 
    18451846/**
    18461847 * Do not use. Removes theme support internally, ignorant of the blacklist.
    18471848 *
     
    18531854 * @global Custom_Background   $custom_background
    18541855 *
    18551856 * @param string $feature
     1857 * @param array $args Optional arguments
     1858 * @return bool|void
    18561859 */
    1857 function _remove_theme_support( $feature ) {
     1860function _remove_theme_support( $feature, $args = array() ) {
    18581861        global $_wp_theme_features;
    18591862
     1863        // Theme support was never added for this feature.
     1864        if ( ! isset( $_wp_theme_features[ $feature ] ) ) {
     1865                return false;
     1866        }
     1867
     1868        // Full removal of theme support.
    18601869        switch ( $feature ) {
    18611870                case 'custom-header-uploads' :
    1862                         if ( ! isset( $_wp_theme_features['custom-header'] ) )
     1871                        if ( ! isset( $_wp_theme_features['custom-header'] ) ) {
    18631872                                return false;
     1873                        }
    18641874                        add_theme_support( 'custom-header', array( 'uploads' => false ) );
     1875
    18651876                        return; // Do not continue - custom-header-uploads no longer exists.
    1866         }
    18671877
    1868         if ( ! isset( $_wp_theme_features[ $feature ] ) )
    1869                 return false;
    1870 
    1871         switch ( $feature ) {
    18721878                case 'custom-header' :
    1873                         if ( ! did_action( 'wp_loaded' ) )
     1879                        if ( ! did_action( 'wp_loaded' ) ) {
    18741880                                break;
     1881                        }
    18751882                        $support = get_theme_support( 'custom-header' );
    1876                         if ( $support[0]['wp-head-callback'] )
     1883                        if ( $support[0]['wp-head-callback'] ) {
    18771884                                remove_action( 'wp_head', $support[0]['wp-head-callback'] );
     1885                        }
    18781886                        remove_action( 'admin_menu', array( $GLOBALS['custom_image_header'], 'init' ) );
    18791887                        unset( $GLOBALS['custom_image_header'] );
    18801888                        break;
    18811889
    18821890                case 'custom-background' :
    1883                         if ( ! did_action( 'wp_loaded' ) )
     1891                        if ( ! did_action( 'wp_loaded' ) ) {
    18841892                                break;
     1893                        }
    18851894                        $support = get_theme_support( 'custom-background' );
    18861895                        remove_action( 'wp_head', $support[0]['wp-head-callback'] );
    18871896                        remove_action( 'admin_menu', array( $GLOBALS['custom_background'], 'init' ) );
    18881897                        unset( $GLOBALS['custom_background'] );
    18891898                        break;
     1899
     1900                case 'html5' :
     1901                case 'post-formats' :
     1902                case 'post-thumbnails' :
     1903                        if ( $args ) {
     1904                                $kept_args = array_diff( $_wp_theme_features[ $feature ][0], $args );
     1905
     1906                                if ( ! empty( $kept_args ) ) {
     1907                                        $_wp_theme_features[ $feature ][0] = $kept_args;
     1908                                        return true;
     1909                                }
     1910                        }
     1911
     1912                        break;
    18901913        }
    18911914
    18921915        unset( $_wp_theme_features[ $feature ] );