首页 > 解决方案 > Gutenberg - 检测更改以发布特色图片 alt_text

问题描述

我正在为 Gutenberg 开发一个插件。我的插件必须访问帖子特色图片的 alt_text 属性才能在其中搜索关键字。我像这样访问特色图像数据:

const featuredId = select('core/editor').getEditedPostAttribute('featured_media');
const featuredMedia = featuredId ? select('core').getMedia(featuredId) : null;
console.log(featuredMedia.alt_text || 'no media');

当我加载编辑器时,一切都按预期工作。但是,如果我对特色图像进行任何更改(编辑替代文本,替换或删除图像)并在之后运行脚本,我会得到特色图像的未更改数据。没有错误或警告。无论我是从我的 js 文件还是浏览器的控制台执行代码都没有关系。当我再次尝试编辑特色图像时,我看到媒体库中的更改,这没关系。保存编辑后的帖子并刷新页面后,我所做的更改对 JS 可用。如何更早地访问更新的特色图片(在我单击“设置特色图片”按钮后)?或者它是 WordPress/Gutenberg 中的错误?还是我错过了什么?

标签: javascriptreactjswordpresswordpress-gutenberg

解决方案


的默认上下文getMedia()是不返回 alt_text 值的视图要在设置特色图像后立即返回 alt_text,请将上下文更改为embed

const featuredId = select('core/editor').getEditedPostAttribute('featured_media');
const featuredMedia = featuredId ? select('core').getMedia(featuredId, { context: 'embed' }) : null;
console.log(featuredMedia.alt_text || 'no media');

该函数使用任何接受的参数getMedia()调用媒体 REST API并返回结果。上下文嵌入包括alt_text响应中未显示的图像。


推荐阅读