如何为WordPress特定分类或标签设置文章缩略图尺寸?
解决分类文章自定义缩略图尺寸的问题
你的思路方向是对的,但代码的用法和执行时机出了问题,导致缩略图没有按预期变化。我来帮你一步步修正:
问题分析
set_post_thumbnail函数用错了:这个函数的作用是给指定文章设置特色图片(也就是上传的那张原图),而不是指定显示的缩略图尺寸。要指定显示尺寸,应该在调用缩略图显示函数时传入参数。- 条件判断的位置不对:你把
in_category的判断直接写在functions.php的全局作用域里,这时候程序还没加载到当前文章的上下文,in_category根本无法判断当前文章属于哪个分类,自然不会生效。
正确的实现步骤
1. 保留functions.php里的图片尺寸注册
这部分你写的是对的,继续保留:
if ( function_exists( 'add_theme_support' ) ) { add_theme_support( 'post-thumbnails' ); add_image_size( 'thumbvert', 500, 750, true ); add_image_size( 'smallvert', 675, 1013, true ); }
2. 在模板文件中根据分类调用对应尺寸
找到你用来显示文章画廊的模板文件(比如archive.php、category.php,或者自定义的模板片段),在循环显示文章的地方,替换原来的缩略图调用代码:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <!-- 你的画廊项容器 --> <div class="gallery-post"> <?php // 根据当前文章的分类选择缩略图尺寸 if ( in_category( 'thumbvert' ) ) { the_post_thumbnail( 'thumbvert' ); // 调用thumbvert尺寸 } elseif ( in_category( 'smallvert' ) ) { the_post_thumbnail( 'smallvert' ); // 调用smallvert尺寸 } else { the_post_thumbnail( array( 500, 333 ) ); // 默认尺寸 } ?> <!-- 其他文章内容,比如标题、摘要 --> <h2><?php the_title(); ?></h2> </div> <?php endwhile; endif; ?>
3. 重新生成缩略图(重要)
如果你之前已经上传过文章图片,新添加的thumbvert和smallvert尺寸不会自动生成对应的缩略图。你需要用Regenerate Thumbnails这类插件批量重新生成所有图片的缩略图,这样新尺寸的图才会正常显示。
这样修改后,不同分类的文章就会自动显示对应尺寸的缩略图啦!
内容的提问来源于stack exchange,提问作者Joost Weddepohl
相关产品推荐
相关产品推荐

