Wp.media多媒体集收藏有时未定义

时间:2021-12-14 作者:devssc

我有一个将外部图像源包含到媒体库中的函数(wp-admin/upload.php), 通过对所述图像源进行ajax调用,适当格式化响应,并使用此函数将每个图像插入到库中:

wp.media.frame.content.get(\'gallery\').collection.add(formatted);
这对我来说真的很好-大多数时候
无论出于何种原因,有时我在调试器中遇到此异常,并且不会添加图像:

jQuery。延迟异常:无法读取未定义(读取“add”)类型的属性错误:无法在addImages读取未定义(读取“add”)类型的属性

这种情况可能只发生在每20-30次换装一次,即便如此,也并不一致。有时,初始加载工作正常,但加载更多图像时,它不工作,或者相反。

我试着在调试器中查看它wp.media.frame.content.get(\'gallery\') 很好,只是collection 未定义。

在我的PHP中,打开wp_enqueue_script 我有[\'media\', \'media-grid\', \'media-editor\', \'media-views\', \'jquery\'] 作为依赖关系,我是否缺少一个
但即使-为什么它有时在初始负载上工作,但在加载更多负载时却不工作(反之亦然)?

(Wordpress版本5.8.1)

1 个回复
最合适的回答,由SO网友:devssc 整理而成

所以我最终发现,画廊有时会切换模式,即使没有点击任何东西(不完全确定实际发生了什么,我不知道主干tbh)

以下是现在对我有效的方法:

if(wp.media.frame.content.get(\'gallery\').collection) {
    wp.media.frame.content.get(\'gallery\').collection.add(formatted);
} else {
    wp.media.frame.controller.content.get(\'gallery\').collection.add(formatted);
}
这个else-第一行在最初加载媒体库时不起作用,所以我在前面进行了检查,如果可以的话,请使用第一行。到目前为止,它似乎适用于所有情况(包括将图像指定给自定义帖子类型时的媒体模式)