Make WordPress Core

Ticket #2433: wp-rewrite-api.diff

File wp-rewrite-api.diff, 4.1 KB (added by davidhouse, 18 years ago)
  • wp-includes/rewrite-functions.php

     
     1<?php
     2
     3//Add a straight rewrite rule
     4function add_rewrite_rule($regex, $redirect) {
     5        global $wp_rewrite;
     6        $wp_rewrite->add_extra_rule($regex, $redirect);
     7}
     8
     9//Add a new tag (like %postname%)
     10//warning: you must call this on init or earlier, otherwise the query var addition stuff won't work
     11function add_rewrite_tag($tagname, $regex) {
     12        //validation
     13        if ($tagname < 3 || $tagname{0} != '%' || $tagname{strlen($tagname)-1} != '%') {
     14                return;
     15        }
     16       
     17        $qv = trim($tagname, '%');
     18       
     19        global $wp_rewrite, $wp;
     20        $wp->add_extra_qv($qv);
     21        $wp_rewrite->add_rewrite_tag($tagname, $regex, trim($tagname, '%') . '=');
     22}
     23
     24//Add a new feed type like /atom1/
     25function add_feed($feedname, $filename) {
     26        global $wp_rewrite;
     27        if (in_array($feedname, $wp_rewrite->feeds)) { //override
     28                $wp_rewrite->feed_files[$filename] = $feedname;
     29                //the feed name is already in $wp_rewrite->feeds
     30        } else { //add it
     31                $wp_rewrite->feeds[] = $feedname;
     32        }
     33}
     34
     35?>
     36 No newline at end of file
  • wp-includes/classes.php

     
    864864        var $index = 'index.php';
    865865        var $matches = '';
    866866        var $rules;
     867        var $extra_rules; //those not generated by the class, see add_rewrite_rule()
    867868        var $use_verbose_rules = false;
    868869        var $rewritecode =
    869870                array(
     
    913914                                        's='
    914915                                        );
    915916
    916         var $feeds = array ('feed', 'rdf', 'rss', 'rss2', 'atom');
    917 
     917        var $feeds = array ( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
     918       
     919        //the filenames aren't actually used in WP_Rewrite but seems a convenient place as any to store them
     920        var $feed_files = array (
     921                'rdf'  => 'wp-rdf.php'
     922                'rss'  => 'wp-rss.php'
     923                'rss2' => 'wp-rss2.php'
     924                'atom' =>'wp-atom.php'
     925        ); 
     926     
    918927        function using_permalinks() {
    919928                if (empty($this->permalink_structure))
    920929                        return false;
     
    14001409
    14011410                return $rules;
    14021411        }
     1412       
     1413        //Add a straight rewrite rule
     1414        function add_extra_rule($regex, $redirect) {
     1415                if (!is_array($this->extra_rules)) {
     1416                        $this->extra_rules = array ();
     1417                }
     1418                $this->extra_rules[$regex] = $redirect;
     1419        }
    14031420
    14041421        function flush_rules() {
    14051422                generate_page_uri_index();
     
    14561473        var $matched_rule;
    14571474        var $matched_query;
    14581475        var $did_permalink = false;
     1476       
     1477        function add_extra_qv($qv) {
     1478                $this->public_query_vars[] = $qv;
     1479        }
    14591480
    14601481        function parse_request($extra_query_vars = '') {
    14611482                global $wp_rewrite;
  • wp-settings.php

     
    138138require (ABSPATH . WPINC . '/template-functions-post.php');
    139139require (ABSPATH . WPINC . '/template-functions-category.php');
    140140require (ABSPATH . WPINC . '/comment-functions.php');
     141require (ABSPATH . WPINC . '/rewrite-functions.php');
    141142require (ABSPATH . WPINC . '/feed-functions.php');
    142143require (ABSPATH . WPINC . '/links.php');
    143144require (ABSPATH . WPINC . '/kses.php');
  • wp-feed.php

     
    1212    $feed = 'rss2';
    1313}
    1414
     15$file = $wp_rewrite->feed_files[$feed];
     16
    1517if ( is_single() || ($withcomments == 1) ) {
    1618    require(ABSPATH . 'wp-commentsrss2.php');
    1719} else {
    18     switch ($feed) {
    19     case 'atom':
    20         require(ABSPATH . 'wp-atom.php');
    21         break;
    22     case 'rdf':
    23         require(ABSPATH . 'wp-rdf.php');
    24         break;
    25     case 'rss':
    26         require(ABSPATH . 'wp-rss.php');
    27         break;
    28     case 'rss2':
    29         require(ABSPATH . 'wp-rss2.php');
    30         break;
    31     case 'comments-rss2':
    32         require(ABSPATH . 'wp-commentsrss2.php');
    33         break;
    34     }
     20        if (in_array($feed, $wp_rewrite->feeds) && !empty($file) && file_exists(ABSPATH . $file)) {
     21                require ABSPATH . $file;
     22        }
    3523}
    3624
    3725?>