最近为一位朋友定制一款图片主题,为其使用了七牛云存储服务,但是想让缩略图支持 URL 外链引用图片,虽然说七牛有 api可以直接调用不同大小的图片,但是对于个人博客来说,或许是大材小用。这里周良为大家提供一个最简单的方法,不调用 API,而是所有的外链图片 Wordpress 都可以支持的方法,即使你不使用七牛也可以使用。
下面是本方法的特点:
其实就是用 WordPress 提供的自定义栏目功能来解决。
$postImageUrl = get_post_meta($post->ID, ‘thumbnail’, true); //设置自定义栏目名为“thumbnail”
functions.php
文件中添加下面代码://缩略图获取
add_theme_support( ‘post-thumbnails’ );
set_post_thumbnail_size( 262, 114 ,true );//设置缩略图的尺寸
function dm_the_thumbnail() {
global $post;
$postImageUrl = get_post_meta($post->ID, ‘thumbnail’, true); //设置自定义栏目名为“thumbnail”
// 判断该文章是否设置有缩略图,如果有则直接显示
if ( has_post_thumbnail() ) {
echo ‘<span class=”work-thumbnail”>’;
the_post_thumbnail();
echo ‘</span>’;
} elseif ($postImageUrl) {
echo ‘<span class=”work-thumbnail”><img alt=”” src=”‘.$postImageUrl.’” /></span>’;
} else { //如果文章没有设置缩略图,则查找文章内是否包含图片
$content = $post->post_content;
preg_match_all(‘/<img.?(?: |\t|\r|\n)?src=[\’”]?(.+?)[\’”]?(?:(?: |\t|\r|\n)+.?)?>/sim’, $content, $strResult, PREG_PATTERN_ORDER);
$n = count($strResult[1]);
if($n > 0){ // 如果文章内包含有图片,就用第一张图片做为缩略图
echo ‘<span class=”work-thumbnail”><img alt=”” src=”‘.$strResult[1][0].’” /></span>’;
}else { // 如果文章内没有图片,则用默认的图片
echo ‘<span class=”work-thumbnail”><img alt=”” src=”‘.get_bloginfo(‘template_url’).’/images/thumbnail.jpg” /></span>’;
}
}
}
折腾完这些步骤以后,需要后台界面右上角点击显示选项,勾选自定义栏目。
获取 timthumb.php 文件,放在主题根目录下,然后调整样式之类的,关于代码中的结构和类名可以修改为适合自己所使用的主题。