如何从WordPress文章画廊中获取原始尺寸图片?
问题原因
get_post_gallery() 默认返回的是站点媒体设置中定义的缩略图资源(默认规格为150×150px),直接读取返回数组中的src字段拿到的自然都是小尺寸缩略图,和画廊功能本身的逻辑无关。
修改方案
不要直接使用$gallery['src']里的缩略图地址,先提取画廊关联的所有图片附件ID,再通过ID拉取原图尺寸的资源地址即可,修改后的完整代码如下:
<?php /* The loop */ while ( have_posts() ) : the_post(); if ( $gallery = get_post_gallery( get_the_ID(), false ) ) : // 拆分拿到画廊所有图片的附件ID数组 $attachment_ids = explode( ',', $gallery['ids'] ); foreach ( $attachment_ids as $att_id ) { // 第二个参数传'full'即可获取原图尺寸的图片信息 $image_info = wp_get_attachment_image_src( absint( $att_id ), 'full' ); if ( ! empty( $image_info[0] ) ) { $src = $image_info[0]; ?> <img src="<?php echo esc_url($src); ?>" class="w-100" alt="Gallery image" /> <?php } } endif; endwhile; ?>
补充说明
wp_get_attachment_image_src()的第二个参数为图片尺寸标识:传'full'固定获取原图,也可传入'large'/'medium'获取媒体设置中预设的大/中尺寸图,或是主题自定义注册的其他尺寸名- 代码中加入了
absint()做ID格式校验、esc_url()做输出地址安全过滤,避免异常内容输出 - 如果需要读取图片插入画廊时手动选择的尺寸,可将第二个参数设为
false,但要稳定获取原图固定传'full'即可
内容的提问来源于stack exchange,提问作者Suffii
相关产品推荐
相关产品推荐

