Site Editor: Redirect deprecated URLs to path based routing.
The site editor now uses path based routing rather than query string arguments. This redirects the legacy query string URLs to the new routing. Props youknowriad, peterwilsoncc, joemcgill, mukesh27, poena. Fixes #62585. Built from https://develop.svn.wordpress.org/trunk@59794 git-svn-id: http://core.svn.wordpress.org/trunk@59136 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -19,19 +19,102 @@ if ( ! current_user_can( 'edit_theme_options' ) ) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$is_template_part = isset( $_GET['postType'] ) && 'wp_template_part' === sanitize_key( $_GET['postType'] );
|
/**
|
||||||
$is_template_part_path = isset( $_GET['path'] ) && 'wp_template_partall' === sanitize_key( $_GET['path'] );
|
* Maps old site editor urls to the new updated ones.
|
||||||
$is_template_part_editor = $is_template_part || $is_template_part_path;
|
*
|
||||||
$is_patterns = isset( $_GET['postType'] ) && 'wp_block' === sanitize_key( $_GET['postType'] );
|
* @since 6.8.0
|
||||||
$is_patterns_path = isset( $_GET['path'] ) && 'patterns' === sanitize_key( $_GET['path'] );
|
* @access private
|
||||||
$is_patterns_editor = $is_patterns || $is_patterns_path;
|
*
|
||||||
|
* @global string $pagenow The filename of the current screen.
|
||||||
if ( ! wp_is_block_theme() ) {
|
*
|
||||||
if ( ! current_theme_supports( 'block-template-parts' ) && $is_template_part_editor ) {
|
* @return string|false The new URL to redirect to, or false if no redirection is needed.
|
||||||
wp_die( __( 'The theme you are currently using is not compatible with the Site Editor.' ) );
|
*/
|
||||||
} elseif ( ! $is_patterns_editor && ! $is_template_part_editor ) {
|
function _wp_get_site_editor_redirection_url() {
|
||||||
wp_die( __( 'The theme you are currently using is not compatible with the Site Editor.' ) );
|
global $pagenow;
|
||||||
|
if ( 'site-editor.php' !== $pagenow || isset( $_REQUEST['p'] ) || ! $_SERVER['QUERY_STRING'] ) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The following redirects are for the new permalinks in the site editor.
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_navigation' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/wp_navigation/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_navigation' === $_REQUEST['postType'] && empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/navigation' ), remove_query_arg( 'postType' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/wp_global_styles' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg( array( 'p' => '/styles' ), remove_query_arg( 'path' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'page' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/page' ), remove_query_arg( 'postType' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'page' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/page/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_template' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/template' ), remove_query_arg( 'postType' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_template' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/wp_template/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_block' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/pattern' ), remove_query_arg( 'postType' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_block' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/wp_block/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_template_part' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/pattern' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['postType'] ) && 'wp_template_part' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) {
|
||||||
|
return add_query_arg( array( 'p' => '/wp_template_part/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following redirects are for backward compatibility with the old site editor URLs.
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/wp_template_part/all' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg(
|
||||||
|
array(
|
||||||
|
'p' => '/pattern',
|
||||||
|
'postType' => 'wp_template_part',
|
||||||
|
),
|
||||||
|
remove_query_arg( 'path' )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/page' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg( array( 'p' => '/page' ), remove_query_arg( 'path' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/wp_template' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg( array( 'p' => '/template' ), remove_query_arg( 'path' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/patterns' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg( array( 'p' => '/pattern' ), remove_query_arg( 'path' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['path'] ) && '/navigation' === $_REQUEST['path'] ) {
|
||||||
|
return add_query_arg( array( 'p' => '/navigation' ), remove_query_arg( 'path' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return add_query_arg( array( 'p' => '/' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redirect to the site editor to the new URLs if needed.
|
||||||
|
$redirection = _wp_get_site_editor_redirection_url();
|
||||||
|
if ( false !== $redirection ) {
|
||||||
|
wp_safe_redirect( $redirection );
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used in the HTML title tag.
|
// Used in the HTML title tag.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.8-alpha-59793';
|
$wp_version = '6.8-alpha-59794';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|||||||
Reference in New Issue
Block a user