diff --git a/wp-includes/template-functions-links.php b/wp-includes/template-functions-links.php index 71848fac27..29708eabab 100644 --- a/wp-includes/template-functions-links.php +++ b/wp-includes/template-functions-links.php @@ -227,4 +227,199 @@ function edit_comment_link($link = 'Edit This', $before = '', $after = '') { echo "$before $link $after"; } +// Navigation links + +function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') { + global $id, $post, $wpdb; + global $p, $posts, $posts_per_page, $s, $single; + global $querystring_start, $querystring_equal, $querystring_separator; + + if(($p) || ($posts_per_page == 1) || 1 == $single) { + + $current_post_date = $post->post_date; + $current_category = $post->post_category; + + $sqlcat = ''; + if ($in_same_cat != 'no') { + $sqlcat = " AND post_category = '$current_category' "; + } + + $sql_exclude_cats = ''; + if (!empty($excluded_categories)) { + $blah = explode('and', $excluded_categories); + foreach($blah as $category) { + $category = intval($category); + $sql_exclude_cats .= " AND post_category != $category"; + } + } + + $limitprev--; + $lastpost = @$wpdb->get_row("SELECT ID, post_title FROM $wpdb->posts WHERE post_date < '$current_post_date' AND post_status = 'publish' $sqlcat $sql_exclude_cats ORDER BY post_date DESC LIMIT $limitprev, 1"); + if ($lastpost) { + $string = ''.$previous; + if ($title == 'yes') { + $string .= wptexturize(stripslashes($lastpost->post_title)); + } + $string .= ''; + $format = str_replace('%', $string, $format); + echo $format; + } + } +} + +function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat='no', $limitnext=1, $excluded_categories='') { + global $posts_per_page, $post, $wpdb, $single; + if(1 == $posts_per_page || 1 == $single) { + + $current_post_date = $post->post_date; + $current_category = $post->post_category; + + $sqlcat = ''; + if ($in_same_cat != 'no') { + $sqlcat = " AND post_category='$current_category' "; + } + + $sql_exclude_cats = ''; + if (!empty($excluded_categories)) { + $blah = explode('and', $excluded_categories); + foreach($blah as $category) { + $category = intval($category); + $sql_exclude_cats .= " AND post_category != $category"; + } + } + + $now = current_time('mysql'); + + $limitnext--; + + $nextpost = @$wpdb->get_row("SELECT ID,post_title FROM $wpdb->posts WHERE post_date > '$current_post_date' AND post_date < '$now' AND post_status = 'publish' $sqlcat $sql_exclude_cats AND ID != $post->ID ORDER BY post_date ASC LIMIT $limitnext,1"); + if ($nextpost) { + $string = ''.$next; + if ($title=='yes') { + $string .= wptexturize(stripslashes($nextpost->post_title)); + } + $string .= ''; + $format = str_replace('%', $string, $format); + echo $format; + } + } +} + +function get_pagenum_link($pagenum = 1){ + $qstr = $_SERVER['REQUEST_URI']; + + $page_querystring = "paged"; + $page_modstring = "page/"; + $page_modregex = "page/?"; + + // if we already have a QUERY style page string + if( stristr( $qstr, $page_querystring ) ) { + $replacement = "$page_querystring=$pagenum"; + $qstr = preg_replace("/".$page_querystring."[^\d]+\d+/", $replacement, $qstr); + // if we already have a mod_rewrite style page string + } elseif ( preg_match( '|'.$page_modregex.'\d+|', $qstr ) ){ + $qstr = preg_replace('|'.$page_modregex.'\d+|',"$page_modstring$pagenum",$qstr); + + // if we don't have a page string at all ... + // lets see what sort of URL we have... + } else { + // we need to know the way queries are being written + global $querystring_start, $querystring_equal, $querystring_separator; + // if there's a querystring_start (a "?" usually), it's deffinitely not mod_rewritten + if ( stristr( $qstr, $querystring_start ) ){ + // so append the query string (using &, since we already have ?) + $qstr .= $querystring_separator.$page_querystring.$querystring_equal.$pagenum; + // otherwise, it could be rewritten, OR just the default index ... + } elseif( '' != get_settings('permalink_structure')) { + $qstr = preg_replace('|(.*)/[^/]*|', '$1/', $qstr).$page_modstring.$pagenum; + } else { + $qstr = get_settings('blogfilename') . $querystring_start.$page_querystring.$querystring_equal.$pagenum; + } + } + + $home_root = str_replace('http://', '', trim(get_settings('home'))); + $home_root = preg_replace('|/+|i', '/', $home_root); + $qstr = str_replace($home_root . '/', '', $qstr); + $qstr = preg_replace('|^/+|', '', $qstr); + return preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', trailingslashit(get_settings('home')).$qstr); +} + +function next_posts($max_page = 0) { // original by cfactor at cooltux.org + global $p, $paged, $what_to_show, $pagenow; + global $querystring_start, $querystring_equal, $querystring_separator; + + if (empty($p) && ($what_to_show == 'paged')) { + if (!$paged) $paged = 1; + $nextpage = intval($paged) + 1; + if (!$max_page || $max_page >= $nextpage) { + echo get_pagenum_link($nextpage); + } + } +} + +function next_posts_link($label='Next Page »', $max_page=0) { + global $p, $paged, $result, $request, $posts_per_page, $what_to_show, $wpdb; + if ($what_to_show == 'paged') { + if (!$max_page) { + $nxt_request = $request; + //if the query includes a limit clause, call it again without that + //limit clause! + if ($pos = strpos(strtoupper($request), 'LIMIT')) { + $nxt_request = substr($request, 0, $pos); + } + $nxt_result = $wpdb->query($nxt_request); + $numposts = $wpdb->num_rows; + $max_page = ceil($numposts / $posts_per_page); + } + if (!$paged) + $paged = 1; + $nextpage = intval($paged) + 1; + if (empty($p) && (empty($paged) || $nextpage <= $max_page)) { + echo ''. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .''; + } + } +} + + +function previous_posts() { // original by cfactor at cooltux.org + global $_SERVER, $p, $paged, $what_to_show, $pagenow; + global $querystring_start, $querystring_equal, $querystring_separator; + + if (empty($p) && ($what_to_show == 'paged')) { + $nextpage = intval($paged) - 1; + if ($nextpage < 1) $nextpage = 1; + echo get_pagenum_link($nextpage); + } +} + +function previous_posts_link($label='« Previous Page') { + global $p, $paged, $what_to_show; + if (empty($p) && ($paged > 1) && ($what_to_show == 'paged')) { + echo ''. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .''; + } +} + +function posts_nav_link($sep=' — ', $prelabel='« Previous Page', $nxtlabel='Next Page »') { + global $p, $what_to_show, $request, $posts_per_page, $wpdb; + if (empty($p) && ($what_to_show == 'paged')) { + $nxt_request = $request; + if ($pos = strpos(strtoupper($request), 'LIMIT')) { + $nxt_request = substr($request, 0, $pos); + } + $nxt_result = $wpdb->query($nxt_request); + $numposts = $wpdb->num_rows; + $max_page = ceil($numposts / $posts_per_page); + if ($max_page > 1) { + previous_posts_link($prelabel); + echo preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $sep); + next_posts_link($nxtlabel, $max_page); + } + } +} + + ?> \ No newline at end of file diff --git a/wp-includes/template-functions-post.php b/wp-includes/template-functions-post.php index a0aedcb80d..2364e6ac23 100644 --- a/wp-includes/template-functions-post.php +++ b/wp-includes/template-functions-post.php @@ -273,242 +273,6 @@ function link_pages($before='
', $after='
', $next_or_number='number', } } - -function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') { - global $id, $post, $wpdb; - global $p, $posts, $posts_per_page, $s, $single; - global $querystring_start, $querystring_equal, $querystring_separator; - - if(($p) || ($posts_per_page == 1) || 1 == $single) { - - $current_post_date = $post->post_date; - $current_category = $post->post_category; - - $sqlcat = ''; - if ($in_same_cat != 'no') { - $sqlcat = " AND post_category = '$current_category' "; - } - - $sql_exclude_cats = ''; - if (!empty($excluded_categories)) { - $blah = explode('and', $excluded_categories); - foreach($blah as $category) { - $category = intval($category); - $sql_exclude_cats .= " AND post_category != $category"; - } - } - - $limitprev--; - $lastpost = @$wpdb->get_row("SELECT ID, post_title FROM $wpdb->posts WHERE post_date < '$current_post_date' AND post_status = 'publish' $sqlcat $sql_exclude_cats ORDER BY post_date DESC LIMIT $limitprev, 1"); - if ($lastpost) { - $string = ''.$previous; - if ($title == 'yes') { - $string .= wptexturize(stripslashes($lastpost->post_title)); - } - $string .= ''; - $format = str_replace('%', $string, $format); - echo $format; - } - } -} - -function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat='no', $limitnext=1, $excluded_categories='') { - global $posts_per_page, $post, $wpdb, $single; - if(1 == $posts_per_page || 1 == $single) { - - $current_post_date = $post->post_date; - $current_category = $post->post_category; - - $sqlcat = ''; - if ($in_same_cat != 'no') { - $sqlcat = " AND post_category='$current_category' "; - } - - $sql_exclude_cats = ''; - if (!empty($excluded_categories)) { - $blah = explode('and', $excluded_categories); - foreach($blah as $category) { - $category = intval($category); - $sql_exclude_cats .= " AND post_category != $category"; - } - } - - $now = current_time('mysql'); - - $limitnext--; - - $nextpost = @$wpdb->get_row("SELECT ID,post_title FROM $wpdb->posts WHERE post_date > '$current_post_date' AND post_date < '$now' AND post_status = 'publish' $sqlcat $sql_exclude_cats AND ID != $post->ID ORDER BY post_date ASC LIMIT $limitnext,1"); - if ($nextpost) { - $string = ''.$next; - if ($title=='yes') { - $string .= wptexturize(stripslashes($nextpost->post_title)); - } - $string .= ''; - $format = str_replace('%', $string, $format); - echo $format; - } - } -} - -function get_pagenum_link($pagenum = 1){ - $qstr = $_SERVER['REQUEST_URI']; - - $page_querystring = "paged"; - $page_modstring = "page/"; - $page_modregex = "page/?"; - - // if we already have a QUERY style page string - if( stristr( $qstr, $page_querystring ) ) { - $replacement = "$page_querystring=$pagenum"; - $qstr = preg_replace("/".$page_querystring."[^\d]+\d+/", $replacement, $qstr); - // if we already have a mod_rewrite style page string - } elseif ( preg_match( '|'.$page_modregex.'\d+|', $qstr ) ){ - $qstr = preg_replace('|'.$page_modregex.'\d+|',"$page_modstring$pagenum",$qstr); - - // if we don't have a page string at all ... - // lets see what sort of URL we have... - } else { - // we need to know the way queries are being written - global $querystring_start, $querystring_equal, $querystring_separator; - // if there's a querystring_start (a "?" usually), it's deffinitely not mod_rewritten - if ( stristr( $qstr, $querystring_start ) ){ - // so append the query string (using &, since we already have ?) - $qstr .= $querystring_separator.$page_querystring.$querystring_equal.$pagenum; - // otherwise, it could be rewritten, OR just the default index ... - } elseif( '' != get_settings('permalink_structure')) { - $qstr = preg_replace('|(.*)/[^/]*|', '$1/', $qstr).$page_modstring.$pagenum; - } else { - $qstr = get_settings('blogfilename') . $querystring_start.$page_querystring.$querystring_equal.$pagenum; - } - } - - $home_root = str_replace('http://', '', trim(get_settings('home'))); - $home_root = preg_replace('|([^/]*)(.*)|i', '$2', $home_root); - if ('/' != substr($home_root, -1)) $home_root = $home_root . '/'; - - $qstr = str_replace($home_root, '', $qstr); - return trailingslashit(get_settings('home')).$qstr; -} - -function next_posts($max_page = 0) { // original by cfactor at cooltux.org - global $p, $paged, $what_to_show, $pagenow; - global $querystring_start, $querystring_equal, $querystring_separator; -// if (empty($p) && ($what_to_show == 'paged')) { -// $qstr = $_SERVER['QUERY_STRING']; -// if (!empty($qstr)) { -// $qstr = preg_replace('/&paged=\d{0,}/', '', $qstr); -// $qstr = preg_replace('/paged=\d{0,}/', '', $qstr); -// } elseif (stristr($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'] )) { -// if ('' != $qstr = str_replace($_SERVER['SCRIPT_NAME'], '', -// $_SERVER['REQUEST_URI']) ) { -// $qstr = preg_replace('/^\//', '', $qstr); -// $qstr = preg_replace('/paged\/\d{0,}\//', '', $qstr); -// $qstr = preg_replace('/paged\/\d{0,}/', '', $qstr); -// $qstr = preg_replace('/\/$/', '', $qstr); -// } -// } -// if (!$paged) $paged = 1; -// $nextpage = intval($paged) + 1; -// if (!$max_page || $max_page >= $nextpage) { -// echo get_settings('home') .'/'.$pagenow.$querystring_start. -// ($qstr == '' ? '' : $qstr.$querystring_separator) . -// 'paged'.$querystring_equal.$nextpage; -// } -// } - - if (empty($p) && ($what_to_show == 'paged')) { - if (!$paged) $paged = 1; - $nextpage = intval($paged) + 1; - if (!$max_page || $max_page >= $nextpage) { - echo get_pagenum_link($nextpage); - } - } -} - -function next_posts_link($label='Next Page »', $max_page=0) { - global $p, $paged, $result, $request, $posts_per_page, $what_to_show, $wpdb; - if ($what_to_show == 'paged') { - if (!$max_page) { - $nxt_request = $request; - //if the query includes a limit clause, call it again without that - //limit clause! - if ($pos = strpos(strtoupper($request), 'LIMIT')) { - $nxt_request = substr($request, 0, $pos); - } - $nxt_result = $wpdb->query($nxt_request); - $numposts = $wpdb->num_rows; - $max_page = ceil($numposts / $posts_per_page); - } - if (!$paged) - $paged = 1; - $nextpage = intval($paged) + 1; - if (empty($p) && (empty($paged) || $nextpage <= $max_page)) { - echo ''. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .''; - } - } -} - - -function previous_posts() { // original by cfactor at cooltux.org - global $_SERVER, $p, $paged, $what_to_show, $pagenow; - global $querystring_start, $querystring_equal, $querystring_separator; -// if (empty($p) && ($what_to_show == 'paged')) { -// $qstr = $_SERVER['QUERY_STRING']; -// if (!empty($qstr)) { -// $qstr = preg_replace('/&paged=\d{0,}/', '', $qstr); -// $qstr = preg_replace('/paged=\d{0,}/', '', $qstr); -// } elseif (stristr($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'] )) { -// if ('' != $qstr = str_replace($_SERVER['SCRIPT_NAME'], '', -// $_SERVER['REQUEST_URI']) ) { -// $qstr = preg_replace('/^\//', '', $qstr); -// $qstr = preg_replace("/paged\/\d{0,}\//", '', $qstr); -// $qstr = preg_replace('/paged\/\d{0,}/', '', $qstr); -// $qstr = preg_replace('/\/$/', '', $qstr); -// } -// } -// $nextpage = intval($paged) - 1; -// if ($nextpage < 1) $nextpage = 1; -// echo get_settings('home') .'/'.$pagenow.$querystring_start. -// ($qstr == '' ? '' : $qstr.$querystring_separator) . -// 'paged'.$querystring_equal.$nextpage; -// } - - if (empty($p) && ($what_to_show == 'paged')) { - $nextpage = intval($paged) - 1; - if ($nextpage < 1) $nextpage = 1; - echo get_pagenum_link($nextpage); - } -} - -function previous_posts_link($label='« Previous Page') { - global $p, $paged, $what_to_show; - if (empty($p) && ($paged > 1) && ($what_to_show == 'paged')) { - echo ''. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .''; - } -} - -function posts_nav_link($sep=' :: ', $prelabel='<< Previous Page', $nxtlabel='Next Page >>') { - global $p, $what_to_show, $request, $posts_per_page, $wpdb; - if (empty($p) && ($what_to_show == 'paged')) { - $nxt_request = $request; - if ($pos = strpos(strtoupper($request), 'LIMIT')) { - $nxt_request = substr($request, 0, $pos); - } - $nxt_result = $wpdb->query($nxt_request); - $numposts = $wpdb->num_rows; - $max_page = ceil($numposts / $posts_per_page); - if ($max_page > 1) { - previous_posts_link($prelabel); - echo preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $sep); - next_posts_link($nxtlabel, $max_page); - } - } -} - /* * Post-meta: Custom per-post fields. */