Make WordPress Core

Changeset 13773


Ignore:
Timestamp:
03/20/2010 02:05:32 AM (15 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.