Consistent use or disuse of trailing slashes in URLs according to user preference. props MathiasBynens. fixes #1485
git-svn-id: https://develop.svn.wordpress.org/trunk@4886 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
d38a3f7777
commit
5164d38cb5
|
@ -32,10 +32,10 @@ function get_category_link($category_id) {
|
||||||
$category_nicename = $category->category_nicename;
|
$category_nicename = $category->category_nicename;
|
||||||
|
|
||||||
if ( $parent = $category->category_parent )
|
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 = 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);
|
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;
|
$tb_url = get_option('siteurl') . '/wp-trackback.php?p=' . $id;
|
||||||
|
|
||||||
if ( '' != get_option('permalink_structure') )
|
if ( '' != get_option('permalink_structure') )
|
||||||
$tb_url = trailingslashit(get_permalink()) . 'trackback/';
|
$tb_url = trailingslashit(get_permalink()) . user_trailingslashit('trackback');
|
||||||
|
|
||||||
return $tb_url;
|
return $tb_url;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ function comments_rss($commentsrssfilename = '') {
|
||||||
global $id;
|
global $id;
|
||||||
|
|
||||||
if ( '' != get_option('permalink_structure') )
|
if ( '' != get_option('permalink_structure') )
|
||||||
$url = trailingslashit( get_permalink() ) . 'feed/';
|
$url = trailingslashit( get_permalink() ) . user_trailingslashit('feed');
|
||||||
else
|
else
|
||||||
$url = get_option('home') . "/$commentsrssfilename?feed=rss2&p=$id";
|
$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;
|
$link = get_option('home') . '?feed=rss2&author=' . $author_id;
|
||||||
} else {
|
} else {
|
||||||
$link = get_author_posts_url($author_id, $author_nicename);
|
$link = get_author_posts_url($author_id, $author_nicename);
|
||||||
$link = $link . "feed/";
|
$link = $link . user_trailingslashit('feed');
|
||||||
}
|
}
|
||||||
|
|
||||||
$link = apply_filters('author_feed_link', $link);
|
$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;
|
$link = get_option('home') . '?feed=rss2&cat=' . $cat_ID;
|
||||||
} else {
|
} else {
|
||||||
$link = get_category_link($cat_ID);
|
$link = get_category_link($cat_ID);
|
||||||
$link = $link . "feed/";
|
$link = $link . user_trailingslashit('feed/');
|
||||||
}
|
}
|
||||||
|
|
||||||
$link = apply_filters('category_feed_link', $link);
|
$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') {
|
function permalink_anchor($mode = 'id') {
|
||||||
global $post;
|
global $post;
|
||||||
switch ( strtolower($mode) ) {
|
switch ( strtolower($mode) ) {
|
||||||
|
@ -116,7 +133,8 @@ function _get_page_link( $id = false ) {
|
||||||
if ( '' != $pagestruct && 'draft' != $post->post_status ) {
|
if ( '' != $pagestruct && 'draft' != $post->post_status ) {
|
||||||
$link = get_page_uri($id);
|
$link = get_page_uri($id);
|
||||||
$link = str_replace('%pagename%', $link, $pagestruct);
|
$link = str_replace('%pagename%', $link, $pagestruct);
|
||||||
$link = get_option('home') . "/$link/";
|
$link = get_option('home') . "/$link";
|
||||||
|
$link = user_trailingslashit($link);
|
||||||
} else {
|
} else {
|
||||||
$link = get_option('home') . "/?page_id=$id";
|
$link = get_option('home') . "/?page_id=$id";
|
||||||
}
|
}
|
||||||
|
@ -158,7 +176,7 @@ function get_year_link($year) {
|
||||||
$yearlink = $wp_rewrite->get_year_permastruct();
|
$yearlink = $wp_rewrite->get_year_permastruct();
|
||||||
if ( !empty($yearlink) ) {
|
if ( !empty($yearlink) ) {
|
||||||
$yearlink = str_replace('%year%', $year, $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 {
|
} else {
|
||||||
return apply_filters('year_link', get_option('home') . '/?m=' . $year, $year);
|
return apply_filters('year_link', get_option('home') . '/?m=' . $year, $year);
|
||||||
}
|
}
|
||||||
|
@ -174,7 +192,7 @@ function get_month_link($year, $month) {
|
||||||
if ( !empty($monthlink) ) {
|
if ( !empty($monthlink) ) {
|
||||||
$monthlink = str_replace('%year%', $year, $monthlink);
|
$monthlink = str_replace('%year%', $year, $monthlink);
|
||||||
$monthlink = str_replace('%monthnum%', zeroise(intval($month), 2), $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 {
|
} else {
|
||||||
return apply_filters('month_link', get_option('home') . '/?m=' . $year . zeroise($month, 2), $year, $month);
|
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('%year%', $year, $daylink);
|
||||||
$daylink = str_replace('%monthnum%', zeroise(intval($month), 2), $daylink);
|
$daylink = str_replace('%monthnum%', zeroise(intval($month), 2), $daylink);
|
||||||
$daylink = str_replace('%day%', zeroise(intval($day), 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 {
|
} else {
|
||||||
return apply_filters('day_link', get_option('home') . '/?m=' . $year . zeroise($month, 2) . zeroise($day, 2), $year, $month, $day);
|
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 = '';
|
$feed = '';
|
||||||
|
|
||||||
$permalink = str_replace('%feed%', $feed, $permalink);
|
$permalink = str_replace('%feed%', $feed, $permalink);
|
||||||
$permalink = preg_replace('#/+#', '/', "/$permalink/");
|
$permalink = preg_replace('#/+#', '/', "/$permalink");
|
||||||
$output = get_option('home') . $permalink;
|
$output = get_option('home') . user_trailingslashit($permalink);
|
||||||
} else {
|
} else {
|
||||||
if ( false !== strpos($feed, 'comments_') )
|
if ( false !== strpos($feed, 'comments_') )
|
||||||
$feed = str_replace('comments_', 'comments-', $feed);
|
$feed = str_replace('comments_', 'comments-', $feed);
|
||||||
|
@ -435,12 +453,13 @@ function get_pagenum_link($pagenum = 1) {
|
||||||
|
|
||||||
$qstr = preg_replace('|^/+|', '', $qstr);
|
$qstr = preg_replace('|^/+|', '', $qstr);
|
||||||
if ( $permalink )
|
if ( $permalink )
|
||||||
$qstr = trailingslashit($qstr);
|
$qstr = user_trailingslashit($qstr);
|
||||||
$qstr = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', trailingslashit( get_option('home') ) . $qstr );
|
$qstr = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', trailingslashit( get_option('home') ) . $qstr );
|
||||||
|
|
||||||
// showing /page/1/ or ?paged=1 is redundant
|
// showing /page/1/ or ?paged=1 is redundant
|
||||||
if ( 1 === $pagenum ) {
|
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
|
$qstr = remove_query_arg('paged', $qstr); // for query style
|
||||||
}
|
}
|
||||||
return $qstr;
|
return $qstr;
|
||||||
|
|
|
@ -148,6 +148,7 @@ function url_to_postid($url) {
|
||||||
|
|
||||||
class WP_Rewrite {
|
class WP_Rewrite {
|
||||||
var $permalink_structure;
|
var $permalink_structure;
|
||||||
|
var $use_trailing_slashes;
|
||||||
var $category_base;
|
var $category_base;
|
||||||
var $category_structure;
|
var $category_structure;
|
||||||
var $author_base = 'author';
|
var $author_base = 'author';
|
||||||
|
@ -876,6 +877,7 @@ class WP_Rewrite {
|
||||||
unset($this->search_structure);
|
unset($this->search_structure);
|
||||||
unset($this->feed_structure);
|
unset($this->feed_structure);
|
||||||
unset($this->comment_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) {
|
function set_permalink_structure($permalink_structure) {
|
||||||
|
|
Loading…
Reference in New Issue