WordPress 首页智能截取文章

0
1029

之前感觉Wordpress的Read More用着太麻烦了,于是直接在首页调取文章内容的时候用固定的字数截断,感觉很是方便,再也不用手动截取了。可是方便的同时有一大弊端,由于HTML格式被分离了,图像啥的就没了,而且感觉首页有点死板,所以今晚动手重新写了一下调取的方式。

之前用300字数来固定截取,很方便的。

1
2
3
4
5
6
7
8
9
<?php
if ( post_password_required($post) ) {
	$output = get_the_password_form();
	echo '<div class="post-password"><span style="float:left;margin-top:8px;" class="icon-lock icon-large"></span>'.$output.'</div>';
}else{
	echo '<p>'.w_limit_clean($post->post_content,300).'</p>';
?>
<div class="readmore"><a href="<?php the_permalink();?>" title="点击阅读全文" ><span>继续阅读</span></a></div>
<?php }?>

今天晚上琢磨的智能截取方法思路,通过文章中Read More来判断截取,如果包含Read More标签,则按手动截取的内容来显示,如果不包含Read More标签,则自动截取300字为调取内容。同时为了考虑之前发布文章Read More标签的位置(如果连着的几篇文章Read More都在最后一段,首页岂不是很长很长),就从文章ID为1540以后开始此规则。
本文转自http://onedou.com[OneDou Blog] 声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0共享协议. 转载请注明http://onedou.com/[OneDou Blog]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php 
$content = $post->post_content;
$link = get_permalink();
if(get_the_ID()>1540){
	if(preg_match("/<span id="more-1608"></span>/",$content) ){
		echo the_content('');
		echo '<div class="readmore"><a href="'.$link.'" title="点击阅读全文" ><span>继续阅读</span></a></div>';
	}else{
		if( post_password_required($post) ){
 
		$output = get_the_password_form();
		echo '<div class="post-password"><span style="float:left;margin-top:8px;" class="icon-lock icon-large"></span>'.$output.'</div>';
	}else{
		echo '<p>'.w_limit_clean($post->post_content,300).'</p>';
		echo '<div class="readmore"><a href="'.$link.'" title="点击阅读全文" ><span>继续阅读</span></a></div>';
	}
	}
}else{
	if ( post_password_required($post) ) {
		$output = get_the_password_form();
		echo '<div class="post-password"><span style="float:left;margin-top:8px;" class="icon-lock icon-large"></span>'.$output.'</div>';
	}
	else{
		echo '<p>'.w_limit_clean($post->post_content,300).'</p>';
		echo '<div class="readmore"><a href="'.$link.'" title="点击阅读全文" ><span>继续阅读</span></a></div>';
	}
}
?>

本文转自http://onedou.com[OneDou Blog] 声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0共享协议. 转载请注明http://onedou.com/[OneDou Blog]
对了附上我的一个函数w_limit_clean,更加方便直接:

1
2
3
4
5
6
7
function w_limit_clean($excerpt, $substr=0) {
	$string = trim(strip_tags($excerpt));
	if ($substr>0) {
		$string = mb_strimwidth($string, 0, $substr,'...');
	}
	return $string;
}

不过那个后面智能判断截取的代码,if嵌套太多,很容易搅混,所以后来想想用case语句控制的话更加明了。既然弄出来了,就算了是吧,另外,本文就是添加了Read More标签来着,到首页看看效果吧!忘了,首页为了打开的速度,没有加载Syntax的CSS,还是算了吧,自动截取吧,Read More删之。

发表回复

79 − 77 =