使用timthumb.php截取文章缩略图
wordpress自带的缩略图功能会对每次上传的所有图片根据设置的图片尺寸进行裁剪,并把原图和裁剪后的图片保存在网站空间中,图片只裁剪一次,更改设置的尺寸不会重新生成,这样不仅占用主机空间,以后改版网站时还要使用同一尺寸的图片,否则图片会失真或变形。timthumb.php是专门针对wordpress开发的集成在wordpress主题中的缩略图应用项目,只会对调用的图片进行裁剪,而且是在有访问请求时才临时生成一个配置文件,在一定时间内缓存在空间中,不会生成多余的缩略图。
温馨提示:
- timthumb需要主机支持GD库;
- timthumb处理过程需要一定的服务器资源支持;
- timthumb不支持外链图片;
- timthumb出现过漏洞;
- 作者表示不再更新timthumb。
timthumb.php使用方法:
1、下载timthumb.php文件:https://code.google.com/p/timthumb/ 或 http://pan.baidu.com/s/1i4P2SMp
2、上传timthumb.php到当前主题文件夹,并在该主题文件夹中创建一个命名为cache的文件夹,设置cache文件夹的权限为755或777
3、关闭wordpress缩略图功能,教程:http://www.boke8.net/wordpress-close-thumbnail.html
4、在主题的functions.php文件添加以下代码:
- //输出缩略图地址
- function post_thumbnail_src(){
- global $post;
- if( $values = get_post_custom_values("thumbnail") ) { //输出自定义域图片地址
- $values = get_post_custom_values("thumbnail");
- $post_thumbnail_src = $values [0];
- } elseif( has_post_thumbnail() ){ //如果有特色缩略图,则输出缩略图地址
- $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');
- $post_thumbnail_src = $thumbnail_src [0];
- } else {
- $post_thumbnail_src = '';
- ob_start();
- ob_end_clean();
- $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
- $post_thumbnail_src = $matches [1] [0]; //获取该图片 src
- if(empty($post_thumbnail_src)){
- $post_thumbnail_src = get_bloginfo('template_url')."/images/no-image.jpg"; //如果日志中没有图片,则显示默认图片
- }
- };
- echo $post_thumbnail_src;
- }
上面的代码表示先获取自定义域的图片,如果没有设置自定义域图片则获取特色图像,如果没有设置特色图像获取内容首张图片,如果内容也没有图片,则显示默认图像no-image.jpg。
自定义域图片教程:http://www.boke8.net/wordpress-image-thumbnail.html
特色图像教程:http://www.boke8.net/wordpress-built-in-thumbnail.html
5、在需要显示缩略图的地方添加调用代码:
- <img src="<?php bloginfo('template_url');?>/timthumb.php?src=<?php echo post_thumbnail_src(); ?>&h=150&w=200&zc=1" alt="<?php the_title(); ?>" class="thumbnail"/>
使用的参数及说明如下:
w : 生成图片的宽度,如果宽度或高度只设置了一个值,则根据其中一个值进行等比缩放
h : 生成图片的高度,如果高度和宽度都没有指定,则默认为100*100
zc : 生成图片的缩放模式,可选值0, 1, 2, 3, 默认为1。0:根据传入的值进行缩放(不裁剪), 1:以最合适的比例裁剪和调整大小(裁剪), 2:按比例调整大小,并添加边框(裁剪),2:按比例调整大小,不添加边框(裁剪)
webshot : 如果此值为真则进行截图操作
q : 生成图片的质量,默认90
a : 超出部分的裁剪位置,和缩放模式有关,可选值t, b, l, r, 默认为从顶部裁剪
f : 需要对生成后的图片使用一些过滤器的话,则在这里设置不同过滤器的代码和值。
s : 是否对生产的图片进行锐化处理
cc : 生成图片的背景画布颜色
ct : 生成png图片时背景是否透明
在Wordpress上使用timthumb.php生成缩略图一般只需要用到src、w、h、zc四个参数,其他参数使用默认值即可。
附修补timthumb.php漏洞问题:
- 使用最新版的timthumb.php(但作者表示不再更新)
- 服务器目录权限设置
- 删除白名单
在文件中找到以下代码,删除或注释掉
- // external domains that are allowed to be displayed on your website
- $allowedSites = array (
- 'flickr.com',
- 'picasa.com',
- 'blogger.com',
- 'wordpress.com',
- 'img.youtube.com',
- );
使用timthumb.php截取文章缩略图的更多相关文章
- wordpress自动截取文章摘要代码
想要实现 wordpress 首页显示摘要有几种方法: 第一种,可以在写文章的时侯在需要分割的地方加入<!–more–>标签,但在输出首页摘要的同时,也会使feed只显示摘要,不方便读者阅 ...
- wordpress调用文章摘要,若无摘要则自动截取文章内容字数做为摘要
以下是调用指定分类文章列表的一个方法,作者如果有填写文章摘要则直接调用摘要:如果文章摘要忘记写了则自动截取文章内容字数做为摘要.这个方法也适用于调用description标签 <ul> & ...
- ios——MPMoviePlayerController截取视频缩略图 播放视频又可以截取视频缩略图
#import <AVKit/AVKit.h>#import <MediaPlayer/MediaPlayer.h>#import "ViewController.h ...
- iOS截取视频缩略图的两种方法
前言: 看完了使用MPMoviePlayerController播放在线视频,在实际应用中有时候须要获取视频的缩略图,我们来看看怎样截取指定时间内的视频缩略图. 一 使用MPMoviePlayerC ...
- WordPress主题开发:开启文章缩略图功能
安装wordpress后,默认的主题里编辑文章都会看见这个缩略图功能,那么我们自己开发的新主题怎么有这个功能呢? 目录: 一.开启缩略功能 二.设置缩略图大小 三.编辑文章,上传缩略图 四.调用缩略图 ...
- PHP 用 mb_strimwidth() 截取文章摘要
按字符宽度获取 mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encod ...
- Windows下使用ffmpeg与java实现截取视频缩略图
[ffmpeg.exe可执行文件获取]: 网上搜索后得到编译好的ffmpeg文件,下载地址:http://download.csdn.net/source/453719 [安装]: 将下载的文件解压, ...
- 由文章缩略图读出banner图
<div class="banner"> {dede:sql sql="select litpic FROM #@__archives where typei ...
- WordPress D8 主题当中截取文章首图并显示的函数
取自 WordPress D8 主题; 路径 theme\d8\modules ; if ( ! function_exists( 'deel_thumbnail' ) ) : function de ...
随机推荐
- css3 动态背景
动态背景 利用多层背景的交替淡入淡出,实现一种背景在不停变换的效果,先看图. 效果图: DEMO地址 步骤 1.利用css的radial-gradient创建一个镜像渐变的背景.当中的80% 20%为 ...
- samba笔记
############ 1.安装网络yum ############ 2.安装createrepo [root@localhost ~]# yum install createrepo-0.9.8- ...
- hibernate初步2
Hibernate级联设计 数据库表之间的关系(主要关系有一对多.一对一.多对多)主要是从如下三个方面体现出来: 1.表体设计 2.实体类的设计 3.配置文件 以下是一些重要级联设计参数属性介绍: c ...
- Codeforces--630D--Hexagons(规律)
D - Hexagons! Crawling in process... Crawling failed Time Limit:500MS Memory Limit:65536KB ...
- hdu 3037Saving Beans(卢卡斯定理)
Saving Beans Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- TP5.x——聊天列表查询
前言 查询聊天列表,并返回最后一条聊天记录.这个有一个比较尴尬的点就是,一个是你主动发出的,一个是你接收的. 所以这个SQL会比较长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长 ...
- F - Micro-World(简单模拟)
Problem description You have a Petri dish with bacteria and you are preparing to dive into the harsh ...
- MySQL数据库中的delete语句
在MySQL数据库中,只有在数据存在的情况下删除,才会返回受影响的行数.比如大于0的数,如果删除了不存在的数据,则会返回0:
- Oracle快速收集AWR的方案
记一种方便的awr收集方法,该脚本可以按小时收集目标时段的awr 素材:awr_generate.sql(具体脚本内容请见本文末尾) (1)将awr_generate.sql置于数据库服务器本地路径, ...
- spring事务回滚问题
刚刚接到一个上家公司同事的一个电话,问我为什么service方法事务不会滚了,日志打印了,调用webservice报错. 我让他把这个调用执行webservice的方法截图发给我,如下: publ ...