WP_Rewrite::add_permastruct( string $name, string $struct, array $args = array() )
Adds a new permalink structure.
Description
A permalink structure (permastruct) is an abstract definition of a set of rewrite rules; it is an easy way of expressing a set of regular expressions that rewrite to a set of query strings. The new permastruct is added to the WP_Rewrite::$extra_permastructs array.
When the rewrite rules are built by WP_Rewrite::rewrite_rules(), all of these extra permastructs are passed to WP_Rewrite::generate_rewrite_rules() which transforms them into the regular expressions that many love to hate.
The $args
parameter gives you control over how WP_Rewrite::generate_rewrite_rules() works on the new permastruct.
Parameters
- $name
-
(Required) Name for permalink structure.
- $struct
-
(Required) Permalink structure (e.g. category/%category%)
- $args
-
(Optional) Arguments for building rewrite rules based on the permalink structure.<br> <br>
- 'with_front'
(bool) Whether the structure should be prepended withWP_Rewrite::$front
.<br> Default true.<br> - 'ep_mask'
(int) The endpoint mask defining which endpoints are added to the structure.<br> Accepts a mask of:<br>EP_ALL
<br>EP_NONE
<br>EP_ALL_ARCHIVES
<br>EP_ATTACHMENT
<br>EP_AUTHORS
<br>EP_CATEGORIES
<br>EP_COMMENTS
<br>EP_DATE
<br>EP_DAY
<br>EP_MONTH
<br>EP_PAGES
<br>EP_PERMALINK
<br>EP_ROOT
<br>EP_SEARCH
<br>EP_TAGS
<br>EP_YEAR
DefaultEP_NONE
.<br>
- 'paged'
(bool) Whether archive pagination rules should be added for the structure.<br> Default true.<br> - 'feed'
(bool) Whether feed rewrite rules should be added for the structure. Default true.<br> - 'forcomments'
(bool) Whether the feed rules should be a query for a comments feed. Default false.<br> - 'walk_dirs'
(bool) Whether the 'directories' making up the structure should be walked over and rewrite rules built for each in-turn. Default true.<br> - 'endpoints'
(bool) Whether endpoints should be applied to the generated rules. Default true.<br>
Default value: array()
- 'with_front'
Source
File: wp-includes/class-wp-rewrite.php
public function add_permastruct( $name, $struct, $args = array() ) {
// Back-compat for the old parameters: $with_front and $ep_mask.
if ( ! is_array( $args ) )
$args = array( 'with_front' => $args );
if ( func_num_args() == 4 )
$args['ep_mask'] = func_get_arg( 3 );
$defaults = array(
'with_front' => true,
'ep_mask' => EP_NONE,
'paged' => true,
'feed' => true,
'forcomments' => false,
'walk_dirs' => true,
'endpoints' => true,
);
$args = array_intersect_key( $args, $defaults );
$args = wp_parse_args( $args, $defaults );
if ( $args['with_front'] )
$struct = $this->front . $struct;
else
$struct = $this->root . $struct;
$args['struct'] = $struct;
$this->extra_permastructs[ $name ] = $args;
}
Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |