A WordPress-centric search engine for devs and theme authors

add_rewrite_endpoint ›

add_rewrite_endpoint ( $name, $places, $query_var = true )
Parameters: (3)
  • (string) $name Name of the endpoint.
    Required: Yes
  • (int) $places Endpoint mask describing the places the endpoint should be added.
    Required: Yes
  • (string|bool) $query_var Name of the corresponding query variable. Pass `false` to skip registering a query_var for this endpoint. Defaults to the value of `$name`.
    Required: No
    Default: true
Defined at:
Change Log:
  • 4.3.0

Add an endpoint, like /trackback/.

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 | EPPAGES );

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/").


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.


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