Wp.media编辑附件屏幕

时间:2017-06-13 作者:Danny van Holten

我读了一些关于wp的东西。媒体对象,并已成功在我可以找到的状态下初始化以上载图像。但对于我正在构建的插件,我需要具有与在de media grid gallery中单击附件时相同的布局。

现在,这是我打开默认wp的“简单”代码。媒体对象

// Create a new media frame
        frame = wp.media({
            title: \'Select or Upload Media Of Your Chosen Persuasion\',
            button: {
                text: \'Use this media\'
            },
            multiple: false  // Set to true to allow multiple files to be selected
        });

        // Finally, open the modal on click
        frame.open();
我需要的是与您按照下面的url完全相同的结果:

http://wordpress.dev/wp-admin/upload.php?item=10
需要替换wordpress的位置。将您自己的WP安装en item=10添加到您实际拥有的任何附件ID。

它应该如以下屏幕截图所示:

Screenshot of edit attachment

有没有人能帮我们找到答案或者帮我找到正确的方向?

2 个回复
SO网友:user63350

Long answer:查看wp包括/js/媒体模型。js,我看到了:

if ( \'select\' === attributes.frame && MediaFrame.Select ) {
    frame = new MediaFrame.Select( attributes );
} else if ( \'post\' === attributes.frame && MediaFrame.Post ) {
    frame = new MediaFrame.Post( attributes );
} else if ( \'manage\' === attributes.frame && MediaFrame.Manage ) {
    frame = new MediaFrame.Manage( attributes );
} else if ( \'image\' === attributes.frame && MediaFrame.ImageDetails ) {
    frame = new MediaFrame.ImageDetails( attributes );
} else if ( \'audio\' === attributes.frame && MediaFrame.AudioDetails ) {
    frame = new MediaFrame.AudioDetails( attributes );
} else if ( \'video\' === attributes.frame && MediaFrame.VideoDetails ) {
    frame = new MediaFrame.VideoDetails( attributes );
} else if ( \'edit-attachments\' === attributes.frame && MediaFrame.EditAttachments ) {
    frame = new MediaFrame.EditAttachments( attributes );
}
所以有人认为你可以做到这一点:

var frame = wp.media.frames.frame = wp.media({
    title: \'Select Image\',
    button: { text: \'Select\' },
multiple: false,
frame: \'edit-attachments\',
controller: {
  gridRouter: {}
}
});
frame.open();
但这行不通。您遇到的第一个问题是需要一些脚本。可以这样处理:

add_action( \'admin_enqueue_scripts\', function() {
  wp_enqueue_media();
  wp_enqueue_script( \'media-grid\' );
  wp_enqueue_script( \'media\' );
});
但还是没有雪茄。

这个问题可以在wp-includes/js/media-grid中找到。js公司:

EditAttachments = MediaFrame.extend({
initialize: function() {
    this.controller = this.options.controller;
    this.gridRouter = this.controller.gridRouter;
这表明EditAttachments需要选项中提供的控制器,并且该控制器必须具有属性“gridRouter”。这样的话:

var frame = wp.media.frames.frame = wp.media({
  frame: \'edit-attachments\',
  controller: {
    gridRouter: {}
  }
});
但这行不通,因为您需要一个有效的gridRouter。

这都与底层网格相关。

了解更多关于wp的信息。media,我可以推荐此插件:https://github.com/ericandrewlewis/wp-media-javascript-guide

当然,还有这一页:https://codex.wordpress.org/Javascript_Reference/wp.media

相关问题:

SO网友:user63350

不幸的是,附件详细信息的逻辑不是单独使用的,它需要打开它的网格。但是,您可以使用get_media_item( attachment_id ) 接收表单HTML以修改图像的方法:https://developer.wordpress.org/reference/functions/get_media_item/

结束

相关推荐

如何在media_Handle_Upload()中获取上传的图片url?

我指的是这本法典,https://codex.wordpress.org/Function_Reference/media_handle_upload在那里,我可以通过以下方式将上载的图像作为附件附加到帖子:$attachment_id = media_handle_upload( \'my_image_upload\', $_POST[\'post_id\'] );但是,我只想url 上传的图像,无需将图像添加为帖子附件。我如何获得上传的图像url?