Make sure rewrite rules are not written until `wp_loaded` has fired
If a plugin attempts to change the rewrite rules to early, other plugins may have their rules inadvertently discarded. Additionally, some function such as `url_to_post_id` cause a rewrite rule lookup that could cause this accidental flushing. This forces the flushing to only occur once `wp_loaded` has been fired. Fixes #37892. Props Chouby. Built from https://develop.svn.wordpress.org/trunk@38751 git-svn-id: http://core.svn.wordpress.org/trunk@38694 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
0dcd49e6fc
commit
a8802232ec
|
@ -1475,6 +1475,10 @@ class WP_Rewrite {
|
||||||
if ( empty($this->rules) ) {
|
if ( empty($this->rules) ) {
|
||||||
$this->matches = 'matches';
|
$this->matches = 'matches';
|
||||||
$this->rewrite_rules();
|
$this->rewrite_rules();
|
||||||
|
if ( ! did_action( 'wp_loaded' ) ) {
|
||||||
|
add_action( 'wp_loaded', array( $this, 'flush_rules' ) );
|
||||||
|
return $this->rules;
|
||||||
|
}
|
||||||
update_option('rewrite_rules', $this->rules);
|
update_option('rewrite_rules', $this->rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.7-alpha-38750';
|
$wp_version = '4.7-alpha-38751';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
|
|
Loading…
Reference in New Issue