WordPress.org

Make WordPress Core

Changeset 13773


Ignore:
Timestamp:
03/20/10 02:05:32 (5 years ago)
Author:
dd32
Message:

Allow for a custom Endpoint Mask to be passed to add_endpoint(). Allows for endpoints to be targeted to specific rewrite rules. Allow custom post_types to specify their Endpoint mask. Allows for post_type's rewrite rules to inherit Post endpoints, or alternatively, allows for add_endpoint() to target specific post_types. Fixes #12605

Location:
trunk/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/post.php

    r13770 r13773  
    791791 
    792792    // Args prefixed with an underscore are reserved for internal use. 
    793     $defaults = array('label' => false, 'singular_label' => false, 'description' => '', 'publicly_queryable' => null, 'exclude_from_search' => null, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => false, 'rewrite' => true, 'query_var' => true, 'supports' => array(), 'register_meta_box_cb' => null, 'taxonomies' => array(), 'show_ui' => null ); 
     793    $defaults = array('label' => false, 'singular_label' => false, 'description' => '', 'publicly_queryable' => null, 'exclude_from_search' => null, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => false, 'rewrite' => true, 'query_var' => true, 'supports' => array(), 'register_meta_box_cb' => null, 'taxonomies' => array(), 'show_ui' => null, 'permalink_epmask' => EP_NONE ); 
    794794    $args = wp_parse_args($args, $defaults); 
    795795    $args = (object) $args; 
     
    856856            $args->rewrite['with_front'] = true; 
    857857        $wp_rewrite->add_rewrite_tag("%$post_type%", '([^/]+)', $args->query_var ? "{$args->query_var}=" : "post_type=$post_type&name="); 
    858         $wp_rewrite->add_permastruct($post_type, "{$args->rewrite['slug']}/%$post_type%", $args->rewrite['with_front']); 
     858        $wp_rewrite->add_permastruct($post_type, "{$args->rewrite['slug']}/%$post_type%", $args->rewrite['with_front'], $args->permalink_epmask); 
    859859    } 
    860860 
  • trunk/wp-includes/rewrite.php

    r13769 r13773  
    5555 * @param bool $with_front Prepend front base to permalink structure. 
    5656 */ 
    57 function add_permastruct( $name, $struct, $with_front = true ) { 
     57function add_permastruct( $name, $struct, $with_front = true, $ep_mask = EP_NONE ) { 
    5858    global $wp_rewrite; 
    59     return $wp_rewrite->add_permastruct( $name, $struct, $with_front ); 
     59    return $wp_rewrite->add_permastruct( $name, $struct, $with_front, $ep_mask ); 
    6060} 
    6161 
     
    10841084 
    10851085        if ( isset($this->extra_permastructs[$name]) ) 
    1086             return $this->extra_permastructs[$name]; 
     1086            return $this->extra_permastructs[$name][0]; 
    10871087 
    10881088        return false; 
     
    13601360                    $ep_mask_specific = EP_DAY; 
    13611361                    break; 
     1362                default: 
     1363                    $ep_mask_specific = EP_NONE; 
    13621364            } 
    13631365 
     
    16121614 
    16131615        // Extra permastructs 
    1614         foreach ( $this->extra_permastructs as $permastruct ) 
    1615             $this->extra_rules_top = array_merge($this->extra_rules_top, $this->generate_rewrite_rules($permastruct, EP_NONE)); 
     1616        foreach ( $this->extra_permastructs as $permastruct ) { 
     1617            if ( is_array($permastruct) ) 
     1618                $this->extra_rules_top = array_merge($this->extra_rules_top, $this->generate_rewrite_rules($permastruct[0], $permastruct[1])); 
     1619            else 
     1620                $this->extra_rules_top = array_merge($this->extra_rules_top, $this->generate_rewrite_rules($permastruct, EP_NONE)); 
     1621        } 
    16161622 
    16171623        // Put them together. 
     
    19071913     * @param bool $with_front Prepend front base to permalink structure. 
    19081914     */ 
    1909     function add_permastruct($name, $struct, $with_front = true) { 
     1915    function add_permastruct($name, $struct, $with_front = true, $ep_mask = EP_NONE) { 
    19101916        if ( $with_front ) 
    19111917            $struct = $this->front . $struct; 
    1912         $this->extra_permastructs[$name] = $struct; 
     1918        $this->extra_permastructs[$name] = array($struct, $ep_mask); 
    19131919    } 
    19141920 
Note: See TracChangeset for help on using the changeset viewer.