Rewrite API/add rewrite endpoint



Add an endpoint, like /trackback/.

Adding an endpoint creates extra rewrite rules for each of the matching places specified by the provided bitmask. A new query var with the same name as the endpoint will also be created. The string following the endpoint definition supplies the value for this query var (e.g. "/foo/bar/" becomes "?foo=bar").


<?php add_rewrite_endpoint( $name, $places ); ?>

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. "<permalink>/json/foo/" becomes "<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).


(string) The name of the endpoint
(int) Endpoint mask describing the places the endpoint should be added. One of the EP_* constants (e.g. EP_PERMALINK) or a combination of them (e.g. EP_PERMALINK | EP_PAGES).

What it does

This adds the endpoint to all link types indicated (e.g. posts, pages, category, author, search) and then template-loader.php includes the relevent handler file.

The name of the endpoint is added as query variable and this gets as value any text present after the endpoint name, separated from the name with a '/'. The template_redirect handler should test this query variable.

This can be used for all sorts of things:

  • ajax handler
  • form submission handler
  • alternative notification handler





External Resources