template-functions-links.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 528 行 · 第 1/2 页

PHP
528
字号
function get_next_post($in_same_cat = false, $excluded_categories = '') {	global $post, $wpdb;	if( !is_single() || is_attachment() )		return null;	$current_post_date = $post->post_date;		$join = '';	if ( $in_same_cat ) {		$join = " INNER JOIN $wpdb->post2cat ON $wpdb->posts.ID= $wpdb->post2cat.post_id ";		$cat_array = get_the_category($post->ID);		$join .= ' AND (category_id = ' . intval($cat_array[0]->cat_ID);		for ( $i = 1; $i < (count($cat_array)); $i++ ) {			$join .= ' OR category_id = ' . intval($cat_array[$i]->cat_ID);		}		$join .= ')'; 	}	$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');		return @$wpdb->get_row("SELECT ID,post_title FROM $wpdb->posts $join WHERE post_date > '$current_post_date' AND post_date < '$now' AND post_status = 'publish' " . ( empty($GLOBALS["wp_xoops_author"])? "" : " AND post_author = " . intval($GLOBALS["wp_xoops_author"]) ) . " $sqlcat $sql_exclude_cats AND ID != $post->ID ORDER BY post_date ASC LIMIT 1");}function previous_post_link($format='&laquo; %link', $link='%title', $in_same_cat = false, $excluded_categories = '') {	if ( is_attachment() )		$post = & get_post($GLOBALS['post']->post_parent);	else		$post = get_previous_post($in_same_cat, $excluded_categories);	if ( !$post )		return;	$title = apply_filters('the_title', $post->post_title, $post);	$string = '<a href="'.get_permalink($post->ID).'">';	$link = str_replace('%title', $title, $link);	$link = $pre . $string . $link . '</a>';	$format = str_replace('%link', $link, $format);	echo $format;	    }function next_post_link($format='%link &raquo;', $link='%title', $in_same_cat = false, $excluded_categories = '') {	$post = get_next_post($in_same_cat, $excluded_categories);	if ( !$post )		return;	$title = apply_filters('the_title', $post->post_title, $post);	$string = '<a href="'.get_permalink($post->ID).'">';	$link = str_replace('%title', $title, $link);	$link = $string . $link . '</a>';	$format = str_replace('%link', $link, $format);	echo $format;	    }// Deprecated.	Use previous_post_link().function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') {	if ( empty($in_same_cat) || 'no' == $in_same_cat )		$in_same_cat = false;	else		$in_same_cat = true;	$post = get_previous_post($in_same_cat, $excluded_categories);	if ( !$post )		return;	$string = '<a href="'.get_permalink($post->ID).'">'.$previous;	if ( 'yes' == $title )		$string .= apply_filters('the_title', $post->post_title, $post);	$string .= '</a>';	$format = str_replace('%', $string, $format);	echo $format;}// Deprecated.	Use next_post_link().function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat='no', $limitnext=1, $excluded_categories='') {	if ( empty($in_same_cat) || 'no' == $in_same_cat )		$in_same_cat = false;	else		$in_same_cat = true;	$post = get_next_post($in_same_cat, $excluded_categories);	if ( !$post	)		return;	$string = '<a href="'.get_permalink($post->ID).'">'.$next;	if ( 'yes' == $title )		$string .= apply_filters('the_title', $post->post_title, $nextpost);	$string .= '</a>';	$format = str_replace('%', $string, $format);	echo $format;}function get_pagenum_link($pagenum = 1) {	global $wp_rewrite;	$qstr = wp_specialchars($_SERVER['REQUEST_URI']);	$page_querystring = "paged"; 	$page_modstring = "page/";	$page_modregex = "page/?";	$permalink = 0;	$home_root = parse_url(get_settings('home'));	$home_root = $home_root['path'];	$home_root = trailingslashit($home_root);	$qstr = preg_replace('|^'. $home_root . '|', '', $qstr);	$qstr = preg_replace('|^/+|', '', $qstr);	$index = $_SERVER['PHP_SELF'];	$index = preg_replace('|^'. $home_root . '|', '', $index);	$index = preg_replace('|^/+|', '', $index);	// 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 ) ) {		$permalink = 1;		$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		// if there's a querystring_start (a "?" usually), it's definitely not mod_rewritten		if ( stristr( $qstr, '?' ) ) {			// so append the query string (using &, since we already have ?)			$qstr .=	'&amp;' . $page_querystring . '=' . $pagenum;			// otherwise, it could be rewritten, OR just the default index ...		} elseif( '' != get_settings('permalink_structure') && ! is_admin() ) {			$permalink = 1;			$index = $wp_rewrite->index;			// If it's not a path info permalink structure, trim the index.			if ( !$wp_rewrite->using_index_permalinks() ) {				$qstr = preg_replace("#/*" . $index . "/*#", '/', $qstr);			} else {				// If using path info style permalinks, make sure the index is in				// the URI.				if ( strpos($qstr, $index) === false )					$qstr = '/' . $index . $qstr;			}			$qstr =	trailingslashit($qstr) . $page_modstring . $pagenum;		} else {			$qstr = $index . '?' . $page_querystring . '=' . $pagenum;		}	}	$qstr = preg_replace('|^/+|', '', $qstr);	if ( $permalink )		$qstr = trailingslashit($qstr);	$qstr = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', trailingslashit( get_settings('home') ) . $qstr );		// showing /page/1/ or ?paged=1 is redundant	if ( 1 === $pagenum ) {		$qstr = str_replace('page/1/', '', $qstr); // for mod_rewrite style		$qstr = remove_query_arg('paged', $qstr); // for query style	}	return $qstr;}function next_posts($max_page = 0) { // original by cfactor at cooltux.org	global $paged, $pagenow;	if ( !is_single() ) {		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 &raquo;', $max_page=0) {	global $paged, $result, $request, $posts_per_page, $wpdb, $max_num_pages;	if ( !$max_page ) {			if ( isset($max_num_pages) ) {				$max_page = $max_num_pages;			} else {				preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);				$fromwhere = $matches[1];				$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");				$max_page = $max_num_pages = ceil($numposts / $posts_per_page);			}	}	if ( !$paged )		$paged = 1;	$nextpage = intval($paged) + 1;	if ( (! is_single()) && (empty($paged) || $nextpage <= $max_page) ) {		echo '<a href="';		next_posts($max_page);		echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';	}}function previous_posts() { // original by cfactor at cooltux.org	global $paged, $pagenow;	if ( !is_single() ) {		$nextpage = intval($paged) - 1;		if ( $nextpage < 1 )			$nextpage = 1;		echo get_pagenum_link($nextpage);	}}function previous_posts_link($label='&laquo; Previous Page') {	global $paged;	if ( (!is_single())	&& ($paged > 1) ) {		echo '<a href="';		previous_posts();		echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';	}}function posts_nav_link($sep=' &#8212; ', $prelabel='&laquo; Previous Page', $nxtlabel='Next Page &raquo;') {	global $request, $posts_per_page, $wpdb, $max_num_pages;	if ( !is_single() ) {		if ( 'posts' == get_query_var('what_to_show') ) {			if ( !isset($max_num_pages) ) {				preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);				$fromwhere = $matches[1];				$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");				$max_num_pages = ceil($numposts / $posts_per_page);			}		} else {			$max_num_pages = 999999;		}		if ( $max_num_pages > 1 ) {			previous_posts_link($prelabel);			echo preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $sep);			next_posts_link($nxtlabel, $max_page);		}	}}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?