WP_Rewrite::add_permastruct() WordPress Method

The WP_Rewrite::add_permastruct() method allows you to add a new permastruct for your site. A permastruct is a set of rules that determine how your permalinks are structured. By default, WordPress uses a permastruct called "pretty permalinks" which uses the %postname% tag to structure your permalinks. However, you can use this method to create a custom permastruct for your site. For example, let's say you want to structure your permalinks like this: http://example.com/%year%/%monthnum%/%postname% You would use the WP_Rewrite::add_permastruct() method like this: $ permastruct = array( '%year%' => '', '%monthnum%' => '', '%postname%' => '' ); $wp_rewrite->add_permastruct('custom_permastruct', $permastruct); This would tell WordPress to use your custom permastruct when generating permalinks for your site.

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.


Top ↑

Parameters

$name

(string)(Required)Name for permalink structure.

$struct

(string)(Required)Permalink structure (e.g. category/%category%)

$args

(array)(Optional)Arguments for building rewrite rules based on the permalink structure.

  • 'with_front'
    (bool) 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'
    (bool) Whether archive pagination rules should be added for the structure. Default true.
  • 'feed'
    (bool) Whether feed rewrite rules should be added for the structure. Default true.
  • 'forcomments'
    (bool) Whether the feed rules should be a query for a comments feed. Default false.
  • 'walk_dirs'
    (bool) Whether the 'directories' making up the structure should be walked over and rewrite rules built for each in-turn. Default true.
  • 'endpoints'
    (bool) Whether endpoints should be applied to the generated rules. Default true.

Default value: array()


Top ↑

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


Top ↑

Changelog

Changelog
VersionDescription
2.5.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.