Make WordPress Core


Ignore:
Timestamp:
11/20/2019 06:47:08 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Customize: If the return URL for Close button is a page added to the Appearance menu by a deactivated theme, fall back to the Themes screen.

Props JarretC, Jean-David, SergeyBiryukov.
Fixes #46686.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-customize-manager.php

    r46691 r46754  
    46234623     * @since 4.4.0
    46244624     *
     4625     * @global array $_registered_pages
     4626     *
    46254627     * @return string URL for link to close Customizer.
    46264628     */
    46274629    public function get_return_url() {
     4630        global $_registered_pages;
     4631
    46284632        $referer                    = wp_get_referer();
    46294633        $excluded_referer_basenames = array( 'customize.php', 'wp-login.php' );
     
    46384642            $return_url = home_url( '/' );
    46394643        }
     4644
     4645        $return_url_basename = wp_basename( parse_url( $this->return_url, PHP_URL_PATH ) );
     4646        $return_url_query    = parse_url( $this->return_url, PHP_URL_QUERY );
     4647
     4648        if ( 'themes.php' === $return_url_basename && $return_url_query ) {
     4649            parse_str( $return_url_query, $query_vars );
     4650
     4651            /*
     4652             * If the return URL is a page added by a theme to the Appearance menu via add_submenu_page(),
     4653             * verify that belongs to the active theme, otherwise fall back to the Themes screen.
     4654             */
     4655            if ( isset( $query_vars['page'] ) && ! isset( $_registered_pages[ "appearance_page_{$query_vars['page']}" ] ) ) {
     4656                $return_url = admin_url( 'themes.php' );
     4657            }
     4658        }
     4659
    46404660        return $return_url;
    46414661    }
Note: See TracChangeset for help on using the changeset viewer.