在读了主干之后。js文档我发现,通过ID手动将附件添加到媒体框库中非常容易。
您只需在打开事件上为库指定一个引用即可。然后创建一个wp实例。媒体附件把它拿来。然后对库引用调用add函数并传递附件。我把我的附件id放在一个数组中,然后像这样循环:
file_frame.on(\'open\',function(){
var lib = file_frame.state().get(\'library\');
for (var i=0;i<ids.length;i++){
var attachment = wp.media.attachment(ids[i]);
attachment.fetch();
lib.add(attachment);
}
});
EDIT: 此外,我遇到了一个问题,排序有时会出错,我的一些附件没有放在列表的顶部。所以,为了确保他们做到了,我像这样重写了库的comparator函数,以强制在ID上进行比较。它以前是get(key),但我把它变成了get(\'id\'):
lib.comparator = function ( a, b, options ) {
var key = this.props.get(\'orderby\'),
order = this.props.get(\'order\') || \'DESC\',
ac = a.cid,
bc = b.cid;
a = a.get( \'id\' );
b = b.get( \'id\' );
if ( \'date\' === key || \'modified\' === key ) {
a = a || new Date();
b = b || new Date();
}
// If `options.ties` is set, don\'t enforce the `cid` tiebreaker.
if ( options && options.ties )
ac = bc = null;
return ( \'DESC\' === order ) ? compare( a, b, ac, bc ) : compare( b, a, bc, ac );
}
然而,它会抱怨比较函数没有定义。因此,我只是宣布它自己是一样的,因为它是在可湿性粉剂。媒体:
compare = function( a, b, ac, bc ) {
if ( _.isEqual( a, b ) )
return ac === bc ? 0 : (ac > bc ? -1 : 1);
else
return a > b ? -1 : 1;
};
在向库中添加新附件之前,需要设置此比较器。因为否则问题会持续存在。