使用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 ...
随机推荐
- springboot配置文件加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ – ...
- oc32--构造方法1
// // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property int ag ...
- 托管在IIS上的wcf,在启动的时候,写log
https://blogs.msdn.microsoft.com/wenlong/2006/01/11/how-to-initialize-hosted-wcf-services/ Using App ...
- 2017 Multi-University Training Contest - Team 2 &&hdu 6050 Funny Function
Funny Function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- sql小计合计
转自:http://www.jb51.net/article/18860.htm 这里介绍sql server2005里面的一个使用实例: CREATE TABLE tb(province nvarc ...
- html5 窗口之间的通信
一般窗口通信分为三种: iframe嵌套:多个iframe之间通信. 父页面操作子页面元素:oFrame.contentWindow.document.body. 父页面调用子页面方法:oFrame. ...
- python 46 边界圆角 、a_img_list标签 、伪类选择器
一:边界圆角 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Entity Framework Code First -- 延迟加载和预先加载
还是以这两个表为例子 country包含零个或多个city, 这个外键关系是我后来加上去,原来没有. 然后再用Power Tool逆向, 产生如下代码 1: using System.Componen ...
- P3709 大爷的字符串题(50分)
题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区 ...
- Android Studio 将module打成jar包
1.新建测试工程,工程里面有两个module,app是Android工程,mylibrary是Android Library库. 2.打开mylibrary目录下的build.gradle文件,加入下 ...