普通页面公告正常,AMP 版本打开后公告区域是空白,控制台报 The tag 'amp-img' may not appear as a descendant of tag 'div',验证工具报两个错误。乍看像缓存或者权限的锅,追下去往往不是。

<?php if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) : ?>
  <amp-img src="<?php echo esc_url( $src ); ?>" width="600" height="120" layout="responsive"></amp-img>
<?php endif; ?>

追下去是这么回事:公告模板用了普通 img 和自定义 script,AMP 只允许 amp-img 和 amp-script。插件过滤时把不合法节点整段删掉,公告容器跟着空了。

「AMP 公告渲染」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,公告模板按 AMP 条件分支输出 amp-img,别用普通 img;去掉内联 script,交互改用 amp-bind 实现;用 AMP 验证工具跑一遍公告页,确认零错误。

验收就看一点,AMP 页面公告完整显示,验证工具不再报标签错误。

作者 9823189