WordPress.org

Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Rewrite API/add rewrite endpoint

Description

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

Usage

<?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).

Arguments

$name 
(string) The name of the endpoint
$places 
(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).

Available Places

As of version 3.9.1, the following EP_* constants are available for use in the $places parameter:

EP_NONE 
Endpoint Mask for default, which is nothing.
Bitwise value: 0
EP_PERMALINK 
Endpoint Mask for Permalink.
Bitwise value: 1
EP_ATTACHMENT 
Endpoint Mask for Attachment.
Bitwise value: 2
EP_DATE 
Endpoint Mask for date.
Bitwise value: 4
EP_YEAR 
Endpoint Mask for year
Bitwise value: 8
EP_MONTH 
Endpoint Mask for month.
Bitwise value: 16
EP_DAY 
Endpoint Mask for day.
Bitwise value: 32
EP_ROOT 
Endpoint Mask for root.
Bitwise value: 64
EP_COMMENTS 
Endpoint Mask for comments.
Bitwise value: 128
EP_SEARCH 
Endpoint Mask for searches.
Bitwise value: 256
EP_CATEGORIES 
Endpoint Mask for categories.
Bitwise value: 512
EP_TAGS 
Endpoint Mask for tags.
Bitwise value: 1024
EP_AUTHORS 
Endpoint Mask for authors.
Bitwise value: 2048
EP_PAGES 
Endpoint Mask for pages.
Bitwise value: 4096
EP_ALL_ARCHIVES 
Endpoint Mask for all archive views.
Same as using EP_DATE | EP_YEAR | EP_MONTH | EP_DAY | EP_CATEGORIES | EP_TAGS | EP_AUTHORS
EP_ALL 
Endpoint Mask for everything.
Same as using EP_PERMALINK | EP_ATTACHMENT | EP_ROOT | EP_COMMENTS | EP_SEARCH | EP_PAGES | EP_ALL_ARCHIVES

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 relevant 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 action hook should test this query variable.

This can be used for all sorts of things:

  • ajax handler
  • form submission handler
  • alternative notification handler

Related

Articles

Hooks

Functions

External Resources