使用SQL将WooCommerce商品图片ALT文本设为短描述以优化SEO
WooCommerce商品图片ALT描述更新失败问题排查
需求:将WooCommerce商品关联图片的ALT描述(即_wp_attachment_image_alt元数据)设置为对应商品的短描述。
你能通过以下查询语句获取图片及现有ALT值:
SELECT p.post_title, pm.meta_value AS alt_text FROM mod236_posts LEFT JOIN mod236_postmeta AS pm ON p.ID = pm.post_id AND pm.meta_key = '_wp_attachment_image_alt' WHERE p.post_type = 'attachment' AND p.post_mime_type LIKE 'image/%';
但你的更新语句影响行数为0,问题出在这几个地方:
- 逻辑方向错误:你要更新的是图片的
_wp_attachment_image_alt元数据值,而非图片的post_excerpt字段 - 关联对象错误:你需要关联商品(
post_type='product')的记录来获取短描述,而不是关联图片自身的ALT元数据 - 表关联无效:你的JOIN条件把图片父ID关联到存储图片ALT的元数据记录ID,这会导致没有匹配的关联数据,自然不会有更新
正确的更新语句
如果图片已经存在_wp_attachment_image_alt元数据,用以下语句更新:
UPDATE mod236_postmeta AS alt_meta INNER JOIN mod236_posts AS img ON alt_meta.post_id = img.ID INNER JOIN mod236_posts AS product ON img.post_parent = product.ID SET alt_meta.meta_value = product.post_excerpt WHERE img.post_type = 'attachment' AND img.post_mime_type LIKE 'image/%' AND alt_meta.meta_key = '_wp_attachment_image_alt' AND product.post_type = 'product';
补充:新增并设置ALT描述
如果部分图片还没有_wp_attachment_image_alt元数据记录,用以下语句批量新增并设置值:
INSERT INTO mod236_postmeta (post_id, meta_key, meta_value) SELECT img.ID, '_wp_attachment_image_alt', product.post_excerpt FROM mod236_posts AS img INNER JOIN mod236_posts AS product ON img.post_parent = product.ID WHERE img.post_type = 'attachment' AND img.post_mime_type LIKE 'image/%' AND product.post_type = 'product' ON DUPLICATE KEY UPDATE meta_value = product.post_excerpt;
内容的提问来源于stack exchange,提问作者Juliatzin
相关产品推荐
相关产品推荐

