-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Site Editor: Use path based routing instead of query args and site-ed…
…itor.php routes (#67199) Co-authored-by: youknowriad <[email protected]> Co-authored-by: jsnajdr <[email protected]> Co-authored-by: tyxla <[email protected]>
- Loading branch information
1 parent
2f6ef27
commit c9a5cab
Showing
97 changed files
with
1,249 additions
and
1,546 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
https://github.com/WordPress/wordpress-develop/pull/7903 | ||
|
||
* https://github.com/WordPress/gutenberg/pull/67199 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<?php | ||
/** | ||
* Updates to the site editor in 6.8. | ||
* | ||
* Adds a mandatory dashboard link and redirects old urls. | ||
* | ||
* @package gutenberg | ||
*/ | ||
|
||
add_filter( | ||
'block_editor_settings_all', | ||
function ( $settings ) { | ||
$settings['__experimentalDashboardLink'] = admin_url( '/' ); | ||
return $settings; | ||
} | ||
); | ||
|
||
function gutenberg_get_site_editor_redirection() { | ||
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' => '/' ) ); | ||
} | ||
|
||
function gutenberg_redirect_site_editor_deprecated_urls() { | ||
$redirection = gutenberg_get_site_editor_redirection(); | ||
if ( false !== $redirection ) { | ||
wp_redirect( $redirection, 301 ); | ||
exit; | ||
} | ||
} | ||
add_action( 'admin_init', 'gutenberg_redirect_site_editor_deprecated_urls' ); | ||
|
||
/** | ||
* Filter the `wp_die_handler` to allow access to the Site Editor's new pages page | ||
* for Classic themes. | ||
* | ||
* site-editor.php's access is forbidden for hybrid/classic themes and only allowed with some very special query args (some very special pages like template parts...). | ||
* The only way to disable this protection since we're changing the urls in Gutenberg is to override the wp_die_handler. | ||
* | ||
* @param callable $default_handler The default handler. | ||
* @return callable The default handler or a custom handler. | ||
*/ | ||
function gutenberg_styles_wp_die_handler( $default_handler ) { | ||
if ( ! wp_is_block_theme() && str_contains( $_SERVER['REQUEST_URI'], 'site-editor.php' ) && isset( $_GET['p'] ) ) { | ||
return '__return_false'; | ||
} | ||
return $default_handler; | ||
} | ||
add_filter( 'wp_die_handler', 'gutenberg_styles_wp_die_handler' ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.