willin版相关文章代码写成函数

» 2010-09-01 80条评论

这个是一个朋友需要的,顺便贴出来。

对于熟悉php的盆友这很简单,但还是有很多盆友不懂的,但CP(CopyPaste)肯定懂……但……没有但了……

直接使用的代码可以到这里CP《willin的相关文章代码》(老代码)

或者去willin那里《A9 主题的特色

上面纯粹废话,目的是一定的文章长度才能配合好左边小张的广告图片,哇咔咔

好,废话完,正题!

把下面的代码扔进主题的 functions.php 里面:
2010.11.29 Update:下面这段代码有些小bug,具体移步到这里 https://zww.me/archives/25353 ,根据新的代码对比修正——替换第5行~11行相近的内容)

/* Related Posts 函数:出自kan.willin.org,函数修改zww.me */
function RelatedPosts($post_num = 5) { global $post;
	if(is_single()) {//只在文章页使用
		$related_posts = '<h3>Related Posts:</h3><ul>';
		$exclude_id = $post->ID; // 單獨使用要開此行
		$posttags = get_the_tags(); $i = 0;
		if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->name . ',';
		$args = array(
			'post_status' => 'publish',
			'tag_slug__in' => explode(',', $tags), // 只選 tags 的文章.
			'post__not_in' => explode(',', $exclude_id), // 排除已出現過的文章.
			'caller_get_posts' => 1,
			'orderby' => 'comment_date', // 依評論日期排序.
			'posts_per_page' => $post_num
		);
		query_posts($args);
		 while( have_posts() ) { the_post();
			$related_posts .= '<li><a href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></li>';
			$exclude_id .= ',' . $post->ID; $i ++;
		 } wp_reset_query();
		}
		if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足.
		$cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';
		$args = array(
			'category__in' => explode(',', $cats), // 只選 category 的文章.
			'post__not_in' => explode(',', $exclude_id),
			'caller_get_posts' => 1,
			'orderby' => 'comment_date',
			'posts_per_page' => $post_num - $i
		);
		query_posts($args);
		 while( have_posts() ) { the_post();
			$related_posts .= '<li><a href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></li>';
		 } wp_reset_query();
		}
		$related_posts .= '</ul>';
		return $related_posts;
	}
}

然后用这个调用:

<?php if(function_exists('RelatedPosts')){RelatedPosts(5);} ?>

(里面的5就是显示相关的文章数量)

PS:其实那位折腾的朋友不是这样调用的,加了个自动插入相关文章到文章页面和feed输出代码,就是再把下面这段代码扔functions.php:

function insertfooter($content) {
	if( is_single() || is_feed()) {//文章页和feed输出
		$content.= RelatedPosts(5);//文章结尾插入相关文章
	}
	return $content;
}
add_filter ('the_content', 'insertfooter');

完了。- -

zww
or
oooo

“willin版相关文章代码写成函数”有80条评论

  1. A.shun says:

    华丽的沙发,不解释~ :razz:

    1. A.shun says:

      @A.shun 错别字的沙发 :razz:
      om威武~

  2. BoKeam says:

    有用。看一下 :razz:

  3. 抢地板

    1. zwwooooo says:

      @快播电影 地板要拖地的哦

  4. 我原来用的插件现在也用的代码,让人家给加的,呵呵

    1. zwwooooo says:

      @软件盒子 呵呵,这个不复杂,复杂的是写代码的

  5. Dianso says:

    用以前的那个加入到single.php,要是文章没有tag,就会出错,很郁闷

    1. zwwooooo says:

      @Dianso 那就保持文章都有标签

  6. 这样是不是又少了一个插件?

    1. zwwooooo says:

      @快播电影 本来就是,不过随意吧,插件方便

  7. winy says:

    华丽的文囧文,不解释

    1. zwwooooo says:

      @winy 哈哈,你说对鸟

  8. ZYW says:

    现在依旧在纠结是否应该尽量把插件代码化。。。
    指点下我吧 :mrgreen:

    1. zwwooooo says:

      @ZYW 不用太纠结,合适就好

  9. 好复杂的函数

  10. cho says:

    可以少一个插件,之前这是这么做的。
    现在只在用一个插件。

    1. zwwooooo says:

      @cho 1个插件,强

  11. Max Lee says:

    下次改版再加到我的主题!感谢分享~

  12. 阿七 says:

    插件党路过。。 :???:

  13. Alan says:

    有用!

  14. fblue says:

    willin东西用了不少,下次我也把这个加上,,, :!:

    1. zwwooooo says:

      @fblue 很多喜欢用代码的博主用willin的多

  15. zrqx008 says:

    对代码不是很熟悉,直接装了插件。

    1. zwwooooo says:

      @zrqx008 插件简单

  16. [...] This post was mentioned on Twitter by Max Lee, zwwooooo. zwwooooo said: willin版相关文章代码写成函数 http://goo.gl/fb/igT4R [...]

  17. zwwooooo says:

    @大智若鲁 :evil: 唉,文章没内容么?

  18. hzlzh says:

    标题有歧义,建议加 []

    1. zwwooooo says:

      @hzlzh 呵呵,能明白就行

  19. ifenwen says:

    已经用上此功能~~

  20. 丕子 says:

    嗯 貌似我现在用的是插件 有空改成代码 参考人家的插件改改

    1. zwwooooo says:

      @丕子 插件移植差不多啦

发表评论

昵称 *

网址

B em del U Link Code Quote