Summery Summery

Add an endpoint, like /trackback/.

Syntax Syntax

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

Description 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 Parameters


(Required) Name of the endpoint.


(Required) Endpoint mask describing the places the endpoint should be added.


(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 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.


Leave a Reply