让wordpress文章列表页自动调用文章缩略图

PHPABC WordPress 1,380 次浏览 , 没有评论

wordpress有个功能,可以设置一篇文章的特色图像,这样在首页及各个列表页就可以利用the_post_thumbnail()这个函数来调用该图片的缩略图,而事实上我们在发博文的时候经常懒得多此一举(设置特色图像)。。其实懒人自有懒人的办法,下面这个小函数就可以实现自动调用文章的图片来作为缩略图而无需再设置特色图像(当然,如果一篇文章含有好几个图片又不想第一张图片作为缩略图的话,还是得手工设置一下)。
在外观–编辑里头找到functions.php,加入以下这个函数:

function emtx_auto_thumbnail($pID,$thumb='thumbnail') { 
	$blogimg = FALSE; 
	if (has_post_thumbnail()) {// 判断该文章是否已经设置了“特色图像”,如果有则直接显示该特色图像的缩略图
		$blogimg = wp_get_attachment_image_src(get_post_thumbnail_id($pID),$thumb);
		$blogimg = $blogimg[0];
	} elseif ($postimages = get_children("post_parent=$pID&post_type=attachment&post_mime_type=image&numberposts=0")) {
		//如果文章没有设置特色图像,则查找文章内是否有上传图片
		foreach($postimages as $postimage) {
			$blogimg = wp_get_attachment_image_src($postimage->ID, $thumb);
			$blogimg = $blogimg[0];
		}
	} elseif (preg_match('/<img [^>]*src=["|\']([^"|\']+)/i', get_the_content(), $match) != FALSE) {
		$blogimg = $match[1];
	} 
	if($blogimg) { 
		$blogimg = '<a href="'. get_permalink().'"><img src="'.$blogimg.'" alt="'.get_the_title().'"  class="alignleft wp-post-image"  /></a>';
	}
	return $blogimg;
}

然后在相应的模板文件里面调用缩略图的地方做个修改,把原来调用the_post_thumbnail的地方按照实际需求改为诸如下面这样的代码即可:

<?php if(emtx_auto_thumbnail($post->ID) ) { 
  echo emtx_auto_thumbnail($post->ID);
} ?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go