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:
parent
f639cbcd24
commit
dfeeedc8da
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue