timthumb.php实现WordPress自动缩略图功能

avatar
avatar
tianzi
91
文章
1
评论
January 23, 202014:52:19 评论 2578字阅读8分35秒

From:知言博客

https://webapproach.net/timthumb-php-wordpress-thumbnail.html

利用timthumb.php实现WordPress全自动日志缩略图功能。timthumb.php这是一个专门为 WordPress 而开发的缩略图应用的项目。有点类似于插件,但是又和 WordPress 插件不同,因为它不是被上传于 plugins 文件夹下,而是需要上传到你的主题文件夹中。你可以在这里了解和下载最新版本的 timthumb.php,一般默认配置也就可以了,如果想进一步优化可以根据需要修改 timthumb.php 里前30行的参数

默认情况下timthumb.php是不支持外链图片的,需要修改一下timthumb.php的参数实现支持外链图片

define ('ALLOW_EXTERNAL', TRUE);<br /> 
define ('ALLOW_ALL_EXTERNAL_SITES', TRUE);<br />

下面就是结合了 timthumb.php 和 WordPress 自带的缩略图功能,支持站外链接图片,自动缓存图片的可以全自动日志缩略图功能的代码。代码如下:

<br />
function post_thumbnail( $width = 100,$height = 80 ){<br />
global $post;<br />
if( has_post_thumbnail() ){ //有缩略图,则显示缩略图<br />
$timthumb_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');<br />
$post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$timthumb_src[0].'&h='.$height.'&w='.$width.'&zc=1" alt="'.$post->post_title.'" class="thumb" />';<br />
echo $post_timthumb;<br />
} else{<br />
if ($postid<1)
$postid = get_the_ID();
$image = get_post_meta($postid, "image", TRUE); // 调用自定义域图片
$post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$image.'&h='.$height.'&w='.$width.'&zc=1" alt="'.$post->post_title.'" class="thumb" />';<br />
if ($image != null or $image != '') {<br />
echo $post_timthumb;<br />
} else {<br />
$post_timthumb = '';<br />
ob_start();<br />
ob_end_clean();<br />
$output = preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $index_matches); //获取日志中第一张图片<br />
$first_img_src = $index_matches [1]; //获取该图片 src<br />
if( !empty($first_img_src) ){ //如果日志中有图片<br />
$path_parts = pathinfo($first_img_src); //获取图片 src 信息<br />
$first_img_name = $path_parts["basename"]; //获取图片名<br />
$first_img_pic = get_bloginfo('wpurl'). '/cache/'.$first_img_name; //文件所在地址<br />
$first_img_file = ABSPATH. 'cache/'.$first_img_name; //保存地址<br />
$expired = 604800; //过期时间<br />
if ( !is_file($first_img_file) || (time() - filemtime($first_img_file))> $expired ){<br />
copy($first_img_src, $first_img_file); //远程获取图片保存于本地<br />
$post_timthumb = '<img src="'.$first_img_src.'" alt="'.$post->post_title.'" class="thumb" />'; //保存时用原图显示<br />
}<br />
$post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$first_img_pic.'&h='.$height.'&w='.$width.'&zc=1" alt="'.$post->post_title.'" class="thumb" />';<br />
} else { //如果日志中没有图片,则显示默认<br />
$post_timthumb = '<img src="'.get_bloginfo("template_url").'/images/default.gif" alt="'.$post->post_title.'" class="thumb" />';<br />
}<br />
echo $post_timthumb;<br />
}<br />
}}<br />

把上述代码放在functions.php 里,然后再用

<?php post_thumbnail( 100,100 ) ?>

样调用即可,其中的$width 和 $height 是必须的参数。上述代码意思是如果文章有wordpress自带缩略图,则调用自带缩略图,没有的话则调用自定义域“image”图片作为缩略图,再没有的话就自动截取文章第一张图做为缩略图,如果连图片都没有的话,那就显示一张默认图片。

继续阅读
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar
  • 本文由 发表于 January 23, 202014:52:19
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
为WordPress主题添加文章字数和阅读时间 Wordpress

为WordPress主题添加文章字数和阅读时间

From:知更鸟 http://zmingcx.com/main-inscription-number-and-reading-time.html 显示文章字数和阅读时间,这功能有什么用呢,我也不知道,不过有用户说人家有我们能不能也加一个,那就加呗,就有这篇为WordPress主题添加文章字数和阅读时间。...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: