如何将wp_get_attachment_image_srcset值传入wp_get_attachment_image方法(无需硬编码img标签)
解决方案:通过
wp_get_attachment_image的属性参数传递自定义srcset 其实wp_get_attachment_image本身就支持通过第四个参数(属性数组)来手动指定srcset值,完全不需要硬编码<img>标签。下面分两种场景给你具体说明:
场景1:用默认生成的srcset(无需手动调用wp_get_attachment_image_srcset)
如果你的需求只是让图片自动带上符合WordPress标准的srcset,那这个函数默认就会帮你处理——只要后台设置了正确的图片尺寸,或者主题支持了你要用到的尺寸,直接调用函数就行:
// 假设$attachment_id是你的目标附件ID,'medium'是你要使用的图片尺寸 echo wp_get_attachment_image( $attachment_id, 'medium' );
这行代码会自动输出带有srcset和sizes属性的<img>标签,不需要额外操作。
场景2:传递自定义生成的srcset(手动调用wp_get_attachment_image_srcset)
如果你需要自定义srcset的内容(比如指定特定的尺寸集合、排除某些图片格式等),可以先调用wp_get_attachment_image_srcset生成你需要的srcset字符串,再通过$attr参数传给wp_get_attachment_image:
// 1. 获取目标附件ID,这里以文章特色图片为例,你可以替换成任意附件ID $attachment_id = get_post_thumbnail_id(); // 2. 自定义生成srcset:比如指定使用'large'、'medium'、'thumbnail'三个尺寸 $custom_srcset = wp_get_attachment_image_srcset( $attachment_id, array( 'large', 'medium', 'thumbnail' ) ); // 3. 准备属性数组,把自定义srcset传进去,还能顺便加其他属性 $image_attrs = array( 'srcset' => $custom_srcset, 'alt' => get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ), // 自动获取图片alt文本 'class' => 'custom-image-style' // 添加自定义CSS类 ); // 4. 调用wp_get_attachment_image,传入属性数组 echo wp_get_attachment_image( $attachment_id, 'medium', false, $image_attrs );
这里要注意:
- 第三个参数
$icon设为false(默认值就是false,只是明确写出来更清晰),表示输出正常图片而非图标 - 如果你还需要自定义
sizes属性,也可以在$image_attrs里添加sizes键,值为对应的字符串(比如'(max-width: 768px) 100vw, 50vw')
原理说明
wp_get_attachment_image函数内部会检查你传入的$attr数组里是否有srcset键,如果存在,就会优先使用你提供的值,而不是自动生成的。这样既利用了WordPress内置函数的安全性(比如自动转义属性内容),又满足了自定义srcset的需求,全程不用手动写<img>标签。
内容的提问来源于stack exchange,提问作者Mahdi Yazdani
相关产品推荐
相关产品推荐

