X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/0459461f9ea42e0b090759ff6fe5f48360bef750..refs/tags/wordpress-4.5:/wp-includes/rewrite.php diff --git a/wp-includes/rewrite.php b/wp-includes/rewrite.php index 7f3b2ed3..0763dc50 100644 --- a/wp-includes/rewrite.php +++ b/wp-includes/rewrite.php @@ -172,13 +172,27 @@ function add_rewrite_tag( $tag, $regex, $query = '' ) { $wp_rewrite->add_rewrite_tag( $tag, $regex, $query ); } +/** + * Removes an existing rewrite tag (like %postname%). + * + * @since 4.5.0 + * + * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * + * @param string $tag Name of the rewrite tag. + */ +function remove_rewrite_tag( $tag ) { + global $wp_rewrite; + $wp_rewrite->remove_rewrite_tag( $tag ); +} + /** * Add permalink structure. * * @since 3.0.0 * * @see WP_Rewrite::add_permastruct() - * @global WP_Rewrite $wp_rewrite + * @global WP_Rewrite $wp_rewrite WordPress rewrite component. * * @param string $name Name for permalink structure. * @param string $struct Permalink structure. @@ -197,6 +211,25 @@ function add_permastruct( $name, $struct, $args = array() ) { $wp_rewrite->add_permastruct( $name, $struct, $args ); } +/** + * Removes a permalink structure. + * + * Can only be used to remove permastructs that were added using add_permastruct(). + * Built-in permastructs cannot be removed. + * + * @since 4.5.0 + * + * @see WP_Rewrite::remove_permastruct() + * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * + * @param string $name Name for permalink structure. + */ +function remove_permastruct( $name ) { + global $wp_rewrite; + + $wp_rewrite->remove_permastruct( $name ); +} + /** * Add a new feed type like /atom1/. * @@ -414,7 +447,7 @@ function wp_resolve_numeric_slug_conflicts( $query_vars = array() ) { } /** - * Examine a url and try to determine the post ID it represents. + * Examine a URL and try to determine the post ID it represents. * * Checks are supposedly from the hosted site blog. * @@ -445,13 +478,6 @@ function url_to_postid( $url ) { return $id; } - // Check to see if we are using rewrite rules - $rewrite = $wp_rewrite->wp_rewrite_rules(); - - // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options - if ( empty($rewrite) ) - return 0; - // Get rid of the #anchor $url_split = explode('#', $url); $url = $url_split[0]; @@ -461,7 +487,8 @@ function url_to_postid( $url ) { $url = $url_split[0]; // Set the correct URL scheme. - $url = set_url_scheme( $url ); + $scheme = parse_url( home_url(), PHP_URL_SCHEME ); + $url = set_url_scheme( $url, $scheme ); // Add 'www.' if it is absent and should be there if ( false !== strpos(home_url(), '://www.') && false === strpos($url, '://www.') ) @@ -471,6 +498,21 @@ function url_to_postid( $url ) { if ( false === strpos(home_url(), '://www.') ) $url = str_replace('://www.', '://', $url); + if ( trim( $url, '/' ) === home_url() && 'page' == get_option( 'show_on_front' ) ) { + $page_on_front = get_option( 'page_on_front' ); + + if ( $page_on_front && get_post( $page_on_front ) instanceof WP_Post ) { + return (int) $page_on_front; + } + } + + // Check to see if we are using rewrite rules + $rewrite = $wp_rewrite->wp_rewrite_rules(); + + // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options + if ( empty($rewrite) ) + return 0; + // Strip 'index.php/' if we're not using path info permalinks if ( !$wp_rewrite->using_index_permalinks() ) $url = str_replace( $wp_rewrite->index . '/', '', $url );