javascript - 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 中的错误?还是我错过了什么?
解决方案
的默认上下文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
响应中未显示的图像。