Consistent use or disuse of trailing slashes in URLs according to user preference. props MathiasBynens. fixes #1485

git-svn-id: http://svn.automattic.com/wordpress/trunk@4886 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
markjaquith 2007-02-15 07:07:12 +00:00
parent f639cbcd24
commit dfeeedc8da
5 changed files with 35 additions and 14 deletions

View File

@ -32,10 +32,10 @@ function get_category_link($category_id) {
$category_nicename = $category->category_nicename;
if ( $parent = $category->category_parent )
$category_nicename = get_category_parents($parent, false, '/', true) . $category_nicename . '/';
$category_nicename = get_category_parents($parent, false, '/', true) . $category_nicename;
$catlink = str_replace('%category%', $category_nicename, $catlink);
$catlink = get_option('home') . trailingslashit($catlink);
$catlink = get_option('home') . user_trailingslashit($catlink);
}
return apply_filters('category_link', $catlink, $category_id);
}

View File

@ -226,7 +226,7 @@ function get_trackback_url() {
$tb_url = get_option('siteurl') . '/wp-trackback.php?p=' . $id;
if ( '' != get_option('permalink_structure') )
$tb_url = trailingslashit(get_permalink()) . 'trackback/';
$tb_url = trailingslashit(get_permalink()) . user_trailingslashit('trackback');
return $tb_url;
}

View File

@ -99,7 +99,7 @@ function comments_rss($commentsrssfilename = '') {
global $id;
if ( '' != get_option('permalink_structure') )
$url = trailingslashit( get_permalink() ) . 'feed/';
$url = trailingslashit( get_permalink() ) . user_trailingslashit('feed');
else
$url = get_option('home') . "/$commentsrssfilename?feed=rss2&p=$id";
@ -115,7 +115,7 @@ function get_author_rss_link($echo = false, $author_id, $author_nicename) {
$link = get_option('home') . '?feed=rss2&author=' . $author_id;
} else {
$link = get_author_posts_url($author_id, $author_nicename);
$link = $link . "feed/";
$link = $link . user_trailingslashit('feed');
}
$link = apply_filters('author_feed_link', $link);
@ -133,7 +133,7 @@ function get_category_rss_link($echo = false, $cat_ID, $category_nicename) {
$link = get_option('home') . '?feed=rss2&cat=' . $cat_ID;
} else {
$link = get_category_link($cat_ID);
$link = $link . "feed/";
$link = $link . user_trailingslashit('feed/');
}
$link = apply_filters('category_feed_link', $link);

View File

@ -11,6 +11,23 @@ function permalink_link() { // For backwards compatibility
}
/**
* Conditionally adds a trailing slash if the permalink structure
* has a trailing slash, strips the trailing slash if not
* @global object Uses $wp_rewrite
* @param $string string a URL with or without a trailing slash
* @return string
*/
function user_trailingslashit($string) {
global $wp_rewrite;
if ( $wp_rewrite->use_trailing_slashes )
$string = trailingslashit($string);
else
$string = preg_replace('|/$|', '', $string); // untrailing slash
return $string;
}
function permalink_anchor($mode = 'id') {
global $post;
switch ( strtolower($mode) ) {
@ -116,7 +133,8 @@ function _get_page_link( $id = false ) {
if ( '' != $pagestruct && 'draft' != $post->post_status ) {
$link = get_page_uri($id);
$link = str_replace('%pagename%', $link, $pagestruct);
$link = get_option('home') . "/$link/";
$link = get_option('home') . "/$link";
$link = user_trailingslashit($link);
} else {
$link = get_option('home') . "/?page_id=$id";
}
@ -158,7 +176,7 @@ function get_year_link($year) {
$yearlink = $wp_rewrite->get_year_permastruct();
if ( !empty($yearlink) ) {
$yearlink = str_replace('%year%', $year, $yearlink);
return apply_filters('year_link', get_option('home') . trailingslashit($yearlink), $year);
return apply_filters('year_link', get_option('home') . user_trailingslashit($yearlink), $year);
} else {
return apply_filters('year_link', get_option('home') . '/?m=' . $year, $year);
}
@ -174,7 +192,7 @@ function get_month_link($year, $month) {
if ( !empty($monthlink) ) {
$monthlink = str_replace('%year%', $year, $monthlink);
$monthlink = str_replace('%monthnum%', zeroise(intval($month), 2), $monthlink);
return apply_filters('month_link', get_option('home') . trailingslashit($monthlink), $year, $month);
return apply_filters('month_link', get_option('home') . user_trailingslashit($monthlink), $year, $month);
} else {
return apply_filters('month_link', get_option('home') . '/?m=' . $year . zeroise($month, 2), $year, $month);
}
@ -194,7 +212,7 @@ function get_day_link($year, $month, $day) {
$daylink = str_replace('%year%', $year, $daylink);
$daylink = str_replace('%monthnum%', zeroise(intval($month), 2), $daylink);
$daylink = str_replace('%day%', zeroise(intval($day), 2), $daylink);
return apply_filters('day_link', get_option('home') . trailingslashit($daylink), $year, $month, $day);
return apply_filters('day_link', get_option('home') . user_trailingslashit($daylink), $year, $month, $day);
} else {
return apply_filters('day_link', get_option('home') . '/?m=' . $year . zeroise($month, 2) . zeroise($day, 2), $year, $month, $day);
}
@ -217,8 +235,8 @@ function get_feed_link($feed='rss2') {
$feed = '';
$permalink = str_replace('%feed%', $feed, $permalink);
$permalink = preg_replace('#/+#', '/', "/$permalink/");
$output = get_option('home') . $permalink;
$permalink = preg_replace('#/+#', '/', "/$permalink");
$output = get_option('home') . user_trailingslashit($permalink);
} else {
if ( false !== strpos($feed, 'comments_') )
$feed = str_replace('comments_', 'comments-', $feed);
@ -435,12 +453,13 @@ function get_pagenum_link($pagenum = 1) {
$qstr = preg_replace('|^/+|', '', $qstr);
if ( $permalink )
$qstr = trailingslashit($qstr);
$qstr = user_trailingslashit($qstr);
$qstr = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', trailingslashit( get_option('home') ) . $qstr );
// showing /page/1/ or ?paged=1 is redundant
if ( 1 === $pagenum ) {
$qstr = str_replace('page/1/', '', $qstr); // for mod_rewrite style
$qstr = str_replace(user_trailingslashit('index.php/page/1'), '', $qstr); // for PATHINFO style
$qstr = str_replace(user_trailingslashit('page/1'), '', $qstr); // for mod_rewrite style
$qstr = remove_query_arg('paged', $qstr); // for query style
}
return $qstr;

View File

@ -148,6 +148,7 @@ function url_to_postid($url) {
class WP_Rewrite {
var $permalink_structure;
var $use_trailing_slashes;
var $category_base;
var $category_structure;
var $author_base = 'author';
@ -876,6 +877,7 @@ class WP_Rewrite {
unset($this->search_structure);
unset($this->feed_structure);
unset($this->comment_feed_structure);
$this->use_trailing_slashes = ( substr($this->permalink_structure, -1, 1) == '/' ) ? true : false;
}
function set_permalink_structure($permalink_structure) {