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

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

Signature

add_rewrite_tag( $tag, $regex, $query = '' )
tag
 (string) Name of the new rewrite tag.
regex
 (string) Regular expression to substitute the tag for in rewrite rules.
query
 (string) Optional. String to append to the rewritten query. Must end in '='. Default empty.
Default: ''

Return

(void)

Source

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 );
}
WP Trac GitHub

Link here