WP_Rewrite::add_permastruct()
Adds a new permalink structure.
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.
Method of the class: WP_Rewrite{}
No Hooks.
Return
null
. Nothing (null).
Usage
global $wp_rewrite; $wp_rewrite->add_permastruct( $name, $struct, $args );
- $name(string) (required)
- Name for permalink structure.
- $struct(string) (required)
- Permalink structure (e.g. category/%category%)
- $args(array)
Arguments for building rewrite rules based on the permalink structure.
Default: empty array
-
with_front(true|false)
Whether the structure should be prepended with WP_Rewrite::$front.
Default: true -
ep_mask(int)
The endpoint mask defining which endpoints are added to the structure. 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 Default EP_NONE.
-
paged(true|false)
Whether archive pagination rules should be added for the structure.
Default: true -
feed(true|false)
Whether feed rewrite rules should be added for the structure.
Default: true -
forcomments(true|false)
Whether the feed rules should be a query for a comments feed.
Default: false -
walk_dirs(true|false)
Whether the 'directories' making up the structure should be walked over and rewrite rules built for each in-turn.
Default: true - endpoints(true|false)
Whether endpoints should be applied to the generated rules.
Default: true
-
Changelog
Since 2.5.0 | Introduced. |
WP_Rewrite::add_permastruct() WP Rewrite::add permastruct code WP 6.6.2
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; }