WordPress.org

Make WordPress Core

Changeset 1752


Ignore:
Timestamp:
10/06/2004 02:18:37 AM (15 years ago)
Author:
rboren
Message:

Page/subpage URIs.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-functions.php

    r1747 r1752  
    486486}
    487487
     488function save_mod_rewrite_rules() {
     489    global $is_apache;
     490    $home = get_settings('home');
     491    if ( $home != '' && $home != get_settings('siteurl') ) {
     492        $home_path = parse_url($home);
     493        $home_path = $home_root['path'];
     494        $root = str_replace($_SERVER["PHP_SELF"], '', $_SERVER["PATH_TRANSLATED"]);
     495        $home_path = $root . $home_path . "/";
     496    } else {
     497        $home_path = ABSPATH;
     498    }
     499
     500    if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') )
     501        $writable = true;
     502    else
     503        $writable = false;
     504
     505    $permalink_structure = get_settings('permalink_structure');
     506
     507    if ( strstr($permalink_structure, 'index.php') ) // If they're using
     508        $usingpi = true;
     509    else
     510        $usingpi = false;
     511
     512    if ( $writable && !$usingpi && $is_apache ) {
     513        $rules = explode("\n", mod_rewrite_rules($permalink_structure));
     514        insert_with_markers($home_path.'.htaccess', 'WordPress', $rules);
     515    }
     516}
     517
     518function generate_page_rewrite_rules() {
     519    global $wpdb;
     520    $posts = $wpdb->get_results("SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static'");
     521
     522    $page_rewrite_rules = array();
     523
     524    foreach ($posts as $post) {
     525        // URI => page name
     526        $uri = get_page_uri($post->ID);
     527
     528        $page_rewrite_rules[$uri] = $post->post_name;
     529    }
     530
     531    update_option('page_uris', $page_rewrite_rules);
     532
     533    save_mod_rewrite_rules();
     534}
     535
    488536function the_quicktags () {
    489537// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP
     
    708756}
    709757
    710 function parent_dropdown($parent = 0, $level = 0) {
     758function parent_dropdown($default = 0, $parent = 0, $level = 0) {
    711759    global $wpdb;
    712760    $items = $wpdb->get_results("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order");
     
    714762        foreach ($items as $item) {
    715763            $pad = str_repeat(' ', $level * 3);
    716             if ($item->ID == $current)
     764            if ($item->ID == $default)
    717765                $current = ' selected="selected"';
    718766            else
     
    720768
    721769            echo "\n\t<option value='$item->ID'$current>$pad $item->post_title</a></option>";
    722                 parent_dropdown($item->ID, $level + 1);
     770            parent_dropdown($default, $item->ID, $level + 1);
    723771        }
    724772    } else {
  • trunk/wp-admin/edit-page-form.php

    r1747 r1752  
    5353      <div><select name="parent_id">
    5454        <option value='0'>Main Page (no parent)</option>
    55             <?php parent_dropdown(); ?>
     55            <?php parent_dropdown($post_parent); ?>
    5656        </select>
    5757      </div>
  • trunk/wp-admin/edit-pages.php

    r1747 r1752  
    6868    $ping_status = get_settings('default_ping_status');
    6969    $post_pingback = get_settings('default_pingback_flag');
     70    $post_parent = 0;
    7071
    7172    include('edit-page-form.php');
  • trunk/wp-admin/options-permalink.php

    r1689 r1752  
    3232}
    3333
     34generate_page_rewrite_rules();
     35
    3436if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') )
    3537    $writable = true;
     
    4244    $usingpi = false;
    4345
    44 if ( $writable && !$usingpi && $is_apache ) {
    45     $rules = explode("\n", mod_rewrite_rules($permalink_structure));
    46     insert_with_markers($home_path.'.htaccess', 'WordPress', $rules);
    47 }
     46save_mod_rewrite_rules();
    4847?>
    4948
  • trunk/wp-admin/post.php

    r1751 r1752  
    5757        $post_status = $_POST['post_status'];
    5858        $post_name = $_POST['post_name'];
     59        $post_parent = 0;
     60        if (isset($_POST['parent_id'])) {
     61            $post_parent = $_POST['parent_id'];
     62        }
    5963
    6064        if (empty($post_status)) $post_status = 'draft';
     
    109113
    110114    $postquery ="INSERT INTO $wpdb->posts
    111             (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, post_modified, post_modified_gmt)
     115            (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, post_modified, post_modified_gmt, post_parent)
    112116            VALUES
    113             ('0', '$user_ID', '$now', '$now_gmt', '$content', '$post_title', '$excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$trackback', '$now', '$now_gmt')
     117            ('0', '$user_ID', '$now', '$now_gmt', '$content', '$post_title', '$excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$trackback', '$now', '$now_gmt', '$post_parent')
    114118            ";
    115119
     
    195199    } // end if publish
    196200
     201    if ($post_status = 'static') {
     202        generate_page_rewrite_rules();
     203    }
     204
    197205    exit();
    198206    break;
     
    223231        $pinged = $postdata->pinged;
    224232        $post_name = $postdata->post_name;
    225 
    226         if ($post_status == 'static') {
    227             include('edit-page-form.php');
    228         } else {
    229             include('edit-form-advanced.php');
    230         }
     233        $post_parent = $postdata->post_parent;
     234
     235        if ($post_status == 'static') {
     236            include('edit-page-form.php');
     237        } else {
     238            include('edit-form-advanced.php');
     239        }
    231240
    232241        $post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = '$post_ID'");
     
    287296        if (empty($post_name)) {
    288297          $post_name = $post_title;
     298        }
     299
     300        $post_parent = 0;
     301        if (isset($_POST['parent_id'])) {
     302            $post_parent = $_POST['parent_id'];
    289303        }
    290304
     
    354368            to_ping = '$trackback',
    355369            post_modified = '$now',
    356             post_modified_gmt = '$now_gmt'
     370            post_modified_gmt = '$now_gmt',
     371      post_parent = '$post_parent'
    357372        WHERE ID = $post_ID ");
    358373
     
    421436        }
    422437    } // end if publish
     438
     439    if ($post_status = 'static') {
     440        generate_page_rewrite_rules();
     441    }
    423442
    424443    do_action('edit_post', $post_ID);
  • trunk/wp-admin/upgrade-schema.php

    r1749 r1752  
    212212    add_option('stylesheet', 'default');
    213213    add_option('comment_whitelist', 0);
     214    add_option('page_uris');
    214215
    215216    // Delete unused options
  • trunk/wp-includes/functions.php

    r1746 r1752  
    12161216}
    12171217
     1218function get_page_uri($page) {
     1219    global $wpdb;
     1220    $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page'");
     1221
     1222    $uri = $page->post_name;
     1223
     1224    while ($page->post_parent != 0) {
     1225        $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page->post_parent'");
     1226        $uri = $page->post_name . "/" . $uri;
     1227    }
     1228
     1229    return $uri;
     1230}
     1231
     1232function page_rewrite_rules() {
     1233    $uris = get_settings('page_uris');
     1234
     1235    $rewrite_rules = array();
     1236    foreach ($uris as $uri => $pagename) {
     1237        $rewrite_rules += array($uri . '/?$' => "index.php?pagename=$pagename");
     1238    }
     1239
     1240    return $rewrite_rules;
     1241}
     1242
    12181243function generate_rewrite_rules($permalink_structure = '', $matches = '') {
    12191244    $rewritecode =
     
    14101435    $page_rewrite = generate_rewrite_rules($page_structure, $matches);
    14111436
     1437        // Pages
     1438        $pages_rewrite = page_rewrite_rules();
     1439
    14121440    // Put them together.
    1413     $rewrite = $site_rewrite + $page_rewrite + $search_rewrite + $category_rewrite + $author_rewrite;
     1441    $rewrite = $pages_rewrite + $site_rewrite + $page_rewrite + $search_rewrite + $category_rewrite + $author_rewrite;
    14141442
    14151443    // Add on archive rewrite rules if needed.
  • trunk/wp-includes/template-functions-links.php

    r1695 r1752  
    5050    }
    5151
     52    if ($idpost->post_status == 'static') {
     53        return get_page_link();
     54    }
     55   
    5256    $permalink = get_settings('permalink_structure');
    5357
    5458    if ('' != $permalink) {
    55         if ($idpost->post_status == 'static')
    56             $permalink = page_permastruct();
    57 
    5859        $unixtime = strtotime($idpost->post_date);
    5960
     
    7980    } else { // if they're not using the fancy permalink option
    8081        $permalink = get_settings('home') . '/' . get_settings('blogfilename') . '?p=' . $idpost->ID;
    81         if ($idpost->post_status == 'static')
    82             $permalink .=  '&static=1';
    8382        return $permalink;
    8483    }
     84}
     85
     86function get_page_link($id = false) {
     87    global $post;
     88
     89    if (! $id) {
     90        $id = $post->ID;
     91    }
     92
     93    $permalink = get_settings('permalink_structure');
     94
     95    if ('' != $permalink) {
     96        $link = get_page_uri($id);
     97        $link = get_settings('home') . "/$link/";
     98    } else {
     99        $link = get_settings('home') . "/index.php?p=$id&static=1";
     100    }
     101
     102    return $link;
    85103}
    86104
Note: See TracChangeset for help on using the changeset viewer.