will86 发表于 2013-12-23 20:43:14

非插件实现缩略图的wp代码

缩略图的插件有很多种,比如我最常用的wp-thumbnails,不过在实际运用中我发现,这个插件有时候会跟某些主题有冲突,而且实现不同尺寸的方法也比较复杂,在这里给大家共享一段非插件实现不同尺寸的缩略图的方法。经测试多个主题无冲突。
1、在主题文件夹中建thumbnail.php文件,添加如下代码:

<div class="thumbnail_t">
<?php if ( get_post_meta($post->ID, 'thumbnail',
true) ) : ?>
<?php $image = get_post_meta($post->ID, 'thumbnail',

true); ?>
<a href="<?php the_permalink() ?>" rel="bookmark"
title="<?php the_title(); ?>"><img src="<?php echo $image; ?>"
alt="<?php the_title(); ?>"/></a>
<?php else: ?>
</div>
<!-- 截图 -->
<div class="thumbnail">
<a href="<?php the_permalink() ?>" rel="bookmark"
title="<?php the_title(); ?>">
<?php if (has_post_thumbnail())
{ the_post_thumbnail('thumbnail'); }
else { ?>
<img class="home-thumb" src="<?php echo
catch_first_image() ?>" width="125px" height="80px"(这里的尺寸可以修改,第一个为宽,第二个为高)
alt="<?php the_title(); ?>"/>
<?php } ?>

</a>
<?php endif; ?>
</div>
2、在主题文件夹里面的functions.php文件中添加下面代码:

<?php
if ( function_exists('add_theme_support') )
add_theme_support('post-thumbnails');
function catch_first_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output =
preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',
$post->post_content, $matches);
$first_img = $matches ;

if(empty($first_img)){ //Defines a default image
$random = mt_rand(1, 10);
echo get_bloginfo ( 'stylesheet_directory' );
echo '/images/random/'.$random.'.jpg';
}
return $first_img;
}
?>
通过下面代码调用。
<?php include('/thumbnail.php'); ?>


如果,你想要创建一个新的尺寸的缩略图,那么可以在主题文件夹中建thumbnail2.php文件,添加与第一步相同的代码,在我标记可以修改尺寸的地方修改为你新缩略图的大小,然后可以直接跳过第二步(前提是第二步已经做过)的情况下通过<?php include('/thumbnail2.php'); ?>调用就可以调出新尺寸的缩略图了。其他尺寸缩略图以此类推。



hardrock 发表于 2013-12-23 23:11:06

不是有个特色图像功能在post中,用这个就行
页: [1]
查看完整版本: 非插件实现缩略图的wp代码