如何简化获取WordPress文章附件图片源的PHP代码并实现快捷调用
WordPress第二张附件图片提取封装方案
第一步:添加自定义函数
建议将以下代码放入你当前使用主题的functions.php文件(全局加载,所有模板都可调用),如果你坚持要放在header.php中,放在文件最顶部的PHP代码块内即可:
function harukunt($post_id = null) { // 未传入文章ID时默认读取全局当前文章ID if (empty($post_id)) { global $post; $post_id = $post->ID; } // 获取该文章所有附件图片 $images = get_attached_media('image', $post_id); if (empty($images)) return ''; // 排除特色图片 $featured_id = get_post_thumbnail_id($post_id); if ($featured_id && isset($images[$featured_id])) { unset($images[$featured_id]); } if (empty($images)) return ''; // 读取排除特色图后的第一张附件大图地址 $img_info = wp_get_attachment_image_src(key($images), 'large'); return $img_info ? $img_info[0] : ''; }
第二步:模板内调用
在需要输出图片的位置直接调用即可,有两种调用场景:
- 主循环内/当前文章上下文调用,不需要传参数:
<img src="<?php echo harukunt(); ?>" alt="文章图片"> - 自定义循环/指定文章ID调用,传入对应文章ID即可:
<img src="<?php echo harukunt($post->ID); ?>" alt="文章图片">
优化说明
- 新增了空值判断,避免文章没有附件图片、排除特色图后无剩余图片时抛出PHP警告
- 支持自定义传入文章ID,兼容非主循环的调用场景
- 函数直接返回图片地址字符串,无需额外处理
内容的提问来源于stack exchange,提问作者D. Dragon
相关产品推荐
相关产品推荐

