文章的自定义字段在网页上有值,feed 里一个都看不到,订阅器那边拿不到封面和价格,展示位全是空的。乍看像缓存或者权限的锅,追下去往往不是。

add_action('rss2_item', function(){
  global $post;
  $cover = get_post_meta($post->ID, '_cover_url', true);
  if ($cover) echo '<cover>' . esc_url($cover) . '</cover>';
});

追下去是这么回事:输出自定义字段要用 rss2_item 钩子,挂到 rss2_head 或 wp_head 上都不会进条目节点。字段名带下划线前缀时,取值函数写错就返回空。

碰到「feed 自定义字段」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,确认钩子是 rss2_item,且在循环内执行,能取到当前文章;用 get_post_meta 取字段时把下划线前缀补全,别只写后半截;字段名统一用英文,阅读器对中文标签支持不一致。

验收就看一点,feed 里每个条目都带上自定义字段,值与原文章一致。

作者 9823189