add_rewrite_tag() WordPress Function

The add_rewrite_tag() function allows you to specify a new rewrite tag and its regular expression. This function should be used when you need to specify a new rewrite tag that does not already have a built-in function.

add_rewrite_tag( string $tag, string $regex, string $query = '' ) #

Adds a new rewrite tag (like %postname%).


Description

The $query parameter is optional. If it is omitted you must ensure that you call this on, or before, the ‘init’ hook. This is because $query defaults to $tag=, and for this to work a new query var has to be added.


Top ↑

Parameters

$tag

(string)(Required)Name of the new rewrite tag.

$regex

(string)(Required)Regular expression to substitute the tag for in rewrite rules.

$query

(string)(Optional) String to append to the rewritten query. Must end in '='.

Default value: ''


Top ↑

More Information

This function can be used to make WordPress aware of custom querystring variables. Generally, it’s used in combination with add_rewrite_rule() to create rewrite rules for pages with custom templates.

If you use this function to declare a rewrite tag that already exists, the existing tag will be overwritten.

This function must be called on init or earlier.

Top ↑

What it does

  • Gets a query var name by stripping the % signs from the name of the tag: trim($tag, ‘%’)
  • Calls $wp_rewrite->add_rewrite_tag() with the name, generated QV name and regex.
  • Adds the QV as a query var (again, this could be done by filtering query_vars but it might be nicer to add a function to the WP class that stores ‘extra’ QVs like above)

Top ↑

Source

File: wp-includes/rewrite.php

function add_rewrite_tag( $tag, $regex, $query = '' ) {
	// Validate the tag's name.
	if ( strlen( $tag ) < 3 || '%' !== $tag[0] || '%' !== $tag[ strlen( $tag ) - 1 ] ) {
		return;
	}

	global $wp_rewrite, $wp;

	if ( empty( $query ) ) {
		$qv = trim( $tag, '%' );
		$wp->add_query_var( $qv );
		$query = $qv . '=';
	}

	$wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
}


Top ↑

Changelog

Changelog
VersionDescription
2.1.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.