如何在WordPress自定义RSS Feed模板中输出文章特色图片URL
正确实现方案
你可以直接将模板里的<image>标签代码替换为以下内容,兼容有/无特色图的场景:
<image><?php if ( has_post_thumbnail() ) { // 输出全尺寸特色图URL,esc_url可保证XML格式合法 echo esc_url( get_the_post_thumbnail_url( get_the_ID(), 'full' ) ); } else { // 文章未设置特色图时, fallback显示占位图 echo 'http://placehold.it/100x100'; } ?></image>
如果需要输出其他尺寸的特色图,把代码里的full替换为对应尺寸名(比如thumbnail、medium或你自定义的图片尺寸标识)即可。
之前写法错误原因
- 调用
get_the_post_thumbnail_url时参数顺序错误:该函数第一个参数为文章ID/文章对象,第二个参数才是图片尺寸,你直接将'full'作为第一个参数传入,无法匹配到对应文章的特色图,因此返回空值。 - 调用
wp_get_attachment_image_src时未正确读取返回值:该函数返回的是包含[图片URL, 宽度, 高度, 是否裁剪]四个元素的数组,直接输出数组无法得到纯URL,你需要取数组的第一个元素才能获取图片地址,对应写法如下:
<image><?php $thumbnail_id = get_post_thumbnail_id( get_the_ID() ); $img_info = wp_get_attachment_image_src( $thumbnail_id, 'full' ); echo $img_info ? esc_url( $img_info[0] ) : 'http://placehold.it/100x100'; ?></image>
内容的提问来源于stack exchange,提问作者TurboTobias
相关产品推荐
相关产品推荐

