wppaste
WordPress

WP_Rewrite::rewrite_rules(): string[]

Since
1.5.0
Source
wp-includes/class-wp-rewrite.php:1276
Constructs rewrite matches and queries from permalink structure.

Description

Runs the action 'generate_rewrite_rules' with the parameter that is an reference to the current WP_Rewrite instance to further manipulate the permalink structures and rewrite rules. Runs the 'rewrite_rules_array' filter on the full rewrite rule array. There are two ways to manipulate the rewrite rules, one by hooking into the 'generate_rewrite_rules' action and gaining full control of the object or just manipulating the rewrite rule array before it is passed from the function.

Return

string[]
An associative array of matches and queries.

Hooks fired · 11

11 hooks fire while WP_Rewrite::rewrite_rules() runs, in this order:

  1. apply_filters( post_rewrite_rules )filterline 1319 (+43 into the body)

    Filters rewrite rules used for "post" archives.

  2. apply_filters( date_rewrite_rules )filterline 1333 (+57 into the body)

    Filters rewrite rules used for date archives.

  3. apply_filters( root_rewrite_rules )filterline 1348 (+72 into the body)

    Filters rewrite rules used for root-level archives.

  4. apply_filters( comments_rewrite_rules )filterline 1362 (+86 into the body)

    Filters rewrite rules used for comment feed archives.

  5. apply_filters( search_rewrite_rules )filterline 1378 (+102 into the body)

    Filters rewrite rules used for search archives.

  6. apply_filters( author_rewrite_rules )filterline 1393 (+117 into the body)

    Filters rewrite rules used for author archives.

  7. apply_filters( page_rewrite_rules )filterline 1405 (+129 into the body)

    Filters rewrite rules used for "page" post type archives.

  8. apply_filters( {$permastructname}_rewrite_rules )filterline 1435 (+159 into the body)

    Filters rewrite rules used for individual permastructs.

  9. do_action( tag_rewrite_rules )filter_deprecatedline 1447 (+171 into the body)

    Filters rewrite rules used specifically for Tags.

  10. do_action( generate_rewrite_rules )actionline 1467 (+191 into the body)

    Fires after the rewrite rules are generated.

  11. apply_filters( rewrite_rules_array )filterline 1476 (+200 into the body)

    Filters the full set of generated rewrite rules.

Uses · 11

Used by · 2

Source

	public function rewrite_rules() {		$rewrite = array(); 		if ( empty( $this->permalink_structure ) ) {			return $rewrite;		} 		// robots.txt -- only if installed at the root.		$home_path      = parse_url( home_url() );		$robots_rewrite = ( empty( $home_path['path'] ) || '/' === $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array(); 		// favicon.ico -- only if installed at the root.		$favicon_rewrite = ( empty( $home_path['path'] ) || '/' === $home_path['path'] ) ? array( 'favicon\.ico$' => $this->index . '?favicon=1' ) : array(); 		// sitemap.xml -- only if installed at the root.		$sitemap_rewrite = ( empty( $home_path['path'] ) || '/' === $home_path['path'] ) ? array( 'sitemap\.xml' => $this->index . '??sitemap=index' ) : array(); 		// Old feed and service files.		$deprecated_files = array(			'.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old',			'.*wp-app\.php(/.*)?$' => $this->index . '?error=403',		); 		// Registration rules.		$registration_pages = array();		if ( is_multisite() && is_main_site() ) {			$registration_pages['.*wp-signup.php$']   = $this->index . '?signup=true';			$registration_pages['.*wp-activate.php$'] = $this->index . '?activate=true';		} 		// Deprecated.		$registration_pages['.*wp-register.php$'] = $this->index . '?register=true'; 		// Post rewrite rules.		$post_rewrite = $this->generate_rewrite_rules( $this->permalink_structure, EP_PERMALINK ); 		/**		 * Filters rewrite rules used for "post" archives.		 *		 * @since 1.5.0		 *		 * @param string[] $post_rewrite Array of rewrite rules for posts, keyed by their regex pattern.		 */		$post_rewrite = apply_filters( 'post_rewrite_rules', $post_rewrite ); 		// Date rewrite rules.		$date_rewrite = $this->generate_rewrite_rules( $this->get_date_permastruct(), EP_DATE ); 		/**		 * Filters rewrite rules used for date archives.		 *		 * Likely date archives would include `/yyyy/`, `/yyyy/mm/`, and `/yyyy/mm/dd/`.		 *		 * @since 1.5.0		 *		 * @param string[] $date_rewrite Array of rewrite rules for date archives, keyed by their regex pattern.		 */		$date_rewrite = apply_filters( 'date_rewrite_rules', $date_rewrite ); 		// Root-level rewrite rules.		$root_rewrite = $this->generate_rewrite_rules( $this->root . '/', EP_ROOT ); 		/**		 * Filters rewrite rules used for root-level archives.		 *		 * Likely root-level archives would include pagination rules for the homepage		 * as well as site-wide post feeds (e.g. `/feed/`, and `/feed/atom/`).		 *		 * @since 1.5.0		 *		 * @param string[] $root_rewrite Array of root-level rewrite rules, keyed by their regex pattern.		 */		$root_rewrite = apply_filters( 'root_rewrite_rules', $root_rewrite ); 		// Comments rewrite rules.		$comments_rewrite = $this->generate_rewrite_rules( $this->root . $this->comments_base, EP_COMMENTS, false, true, true, false ); 		/**		 * Filters rewrite rules used for comment feed archives.		 *

History

Introduced in 1.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.7.7 tag, from src/wp-includes/class-wp-rewrite.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.