add_rewrite_endpoint() WordPress Function

The add_rewrite_endpoint() function is used to add a new endpoint to an existing WordPress rewrite rule. Endpoints are typically used to add extra functionality to a WordPress site, such as a custom API or a new front-end page template.

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.


Top ↑

Parameters

$name

(string)(Required)Name of the endpoint.

$places

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

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

$query_var

(string|bool)(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


Top ↑

More Information

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

Top ↑

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


Top ↑

Changelog

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

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.