我正在构建一个插件,在其中我向媒体管理器添加一个选项卡,并可以从其他来源添加内容。我添加了这个选项卡,它会生成一个iframe:
add_filter(\'media_upload_tabs\', \'add_myUpload_tab\');
function add_myUpload_tab($tabs) {
$tabs[\'myTab\'] = "My tab";
Return $tabs;
}
add_action(\'media_upload_myTab\', \'add_myUpload_save_page\');
function add_myUpload_save_page() {
wp_iframe( \'myTab_save_frame\' );
}
function myTab_save_frame()
{
echo media_upload_header();
?><iframe to my other source/><?php
/*** More code below ***/
}
因此,简言之,iframe中有一个iframe.:)wp codex在示例中有一个iframe,但我知道没有它它也可以工作。任何方式。
当我在iframe中玩时,按下一个按钮,iframe中的这个页面会发送一条消息。在我上面写的“下面的更多代码”中,我有以下代码:
<script>
window.addEventListener(\'message\', function(event) {
//Setup variables
var answer = event.data,
wp = parent.wp;
answer.url = answer.url.replace(/\\.\\w+$/ig,\'\');
var data = {
\'action\': \'add_my_image\',
\'file\': answer.url
};
jQuery.post(ajaxurl, data, function(response) {
alert(\'My image was uploaded\');
/** From here and i below I want to do my wp.media stuff **/
});
});
</script>
是的,我知道我没有发送临时通知。这只是为了测试。一切正常。我现在想要实现的是获得wp。介质在“添加介质”->“库”选项卡中刷新库。这就是我失败的地方。
我发现this thread 但这里没有什么真正的帮助。正如您所看到的,由于我在wp\\u iframe中,所以我已将wp声明为父级。wp调用wp。媒体材料。
到目前为止,我已经实现了更改状态,使其显示库,但不刷新。我可以这样做:
wp.media.frame.setState(\'insert\');
但奇怪的是,在此之后,没有更多的js在运行。例如,如果我添加行控制台。日志(“Hello world”);在这一行之后,控制台是无声的。
因此,我怀疑在设置状态之前必须刷新它?
如何选择另一个框架/状态/选项卡(库中的一个),刷新它并(如果可能-不必要)切换到它?