add_rewrite_endpoint( string $name, int $places, string|bool $query_var = true )

Adds an endpoint, like /trackback/.


Description

Adding an endpoint creates extra rewrite rules for each of the matching places specified by the provided bitmask. For example:

add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES );

will add a new rewrite rule ending with "json(/(.*))?/?$" for every permastruct that describes a permalink (post) or page. This is rewritten to "json=$match" where $match is the part of the URL matched by the endpoint regex (e.g. "foo" in "[permalink]/json/foo/").

A new query var with the same name as the endpoint will also be created.

When specifying $places ensure that you are using the EP_* constants (or a combination of them using the bitwise OR operator) as their values are not guaranteed to remain static (especially EP_ALL).

Be sure to flush the rewrite rules – see flush_rewrite_rules() – when your plugin gets activated and deactivated.


Parameters

$name

(Required) Name of the endpoint.

$places

(Required) Endpoint mask describing the places the endpoint should be added.<br> Accepts a mask of:<br>

  • EP_ALL<br>
  • EP_NONE<br>
  • EP_ALL_ARCHIVES<br>
  • EP_ATTACHMENT<br>
  • EP_AUTHORS<br>
  • EP_CATEGORIES<br>
  • EP_COMMENTS<br>
  • EP_DATE<br>
  • EP_DAY<br>
  • EP_MONTH<br>
  • EP_PAGES<br>
  • EP_PERMALINK<br>
  • EP_ROOT<br>
  • EP_SEARCH<br>
  • EP_TAGS<br>
  • EP_YEAR

$query_var

(Optional) Name of the corresponding query variable. Pass false to skip registering a query_var for this endpoint. Defaults to the value of $name.

Default value: true


Source

File: wp-includes/rewrite.php

function add_rewrite_endpoint( $name, $places, $query_var = true ) {
	global $wp_rewrite;
	$wp_rewrite->add_endpoint( $name, $places, $query_var );
}


Changelog

Changelog
Version Description
4.3.0 Added support for skipping query var registration by passing false to $query_var.
2.1.0 Introduced.