Function and usage of add_permastruct() in wordpress


Answers ( 1 )


    The add_permastruct() function in WordPress is used to add a new permalink structure to your website. This function is particularly useful when you are creating custom post types or taxonomies and you want to have specific URL structures for these. Here's a detailed explanation of its usage:


    add_permastruct( string $name, string $struct, array $args = array() )


    • Purpose: Adds a new permalink structure to the WordPress rewrite system.
    • Use Case: Ideal for custom post types, taxonomies, or any other custom URL structures.
    • Underlying Mechanism: Internally, this function utilizes the WP_Rewrite class, specifically the add_permastruct() method of that class.


    1. $name (string, required):

      • Purpose: This is the name of the permalink structure.
      • Example: 'product' for a custom post type of products.
    2. $struct (string, required):

      • Purpose: The actual structure of the permalink.
      • Example: '/product/%product_name%' where %product_name% is a placeholder for the actual product name.
    3. $args (array, optional):

      • Purpose: Additional arguments for building the rewrite rules.
      • Details: This can include several options such as 'with_front' (whether to allow the structure to be prepended with front base), 'ep_mask', etc.
      • Default: array()
      • Reference: For full details, see WP_Rewrite::add_permastruct() documentation.

    Sample Usage:

    Here's a basic example of how add_permastruct() might be used in a WordPress theme or plugin:

    function my_custom_permalink_structure() {
        add_permastruct('product', '/product/%product_name%', array(
            'with_front' => false
    add_action('init', 'my_custom_permalink_structure');

    In this example, a new permalink structure for a custom post type 'product' is created. The URL for a product might look something like, where "widget" is the name of the product.

    Additional Notes:

    • Flushing Rewrite Rules: After adding a new permalink structure, you often need to flush the rewrite rules. This can be done by visiting the Permalinks settings page in the WordPress admin, or programmatically using flush_rewrite_rules().
    • Dynamic Tags: In the $struct parameter, you can use dynamic tags that are replaced with actual values. For example, %product_name% in the structure is replaced with the actual name of the product.

    Remember, improper use of this function and related rewrite rules can lead to issues with your site's URL structure, so it's important to test changes in a development environment first.

Leave an answer