WordPress中的自定义媒体上传器问题

时间:2014-07-03 16:05:21

标签: php jquery wordpress events custom-post-type

我正在尝试在WordPress中创建一个元框,允许用户选择一个PDF文件来附加到他/她正在创建的帖子。到目前为止,metabox显示得很好,媒体上传器在一定程度上按预期工作。

问题是当用户点击浏览按钮时,将首先显示默认媒体上传器。如果我关闭那个并再次单击该按钮,则自定义上传器将显示并按预期工作。这是我正在使用的JS代码......

jQuery(document).ready(function($){

// Instantiates the variable that holds the media library frame.
var pdf_file_frame;

// Runs when the image button is clicked.

$('#pdf-lesson-url-button').click(function(e){

    // Prevents the default action from occurring.
    e.preventDefault();

    // If the frame already exists, re-open it.
    if ( pdf_file_frame ) {
        pdf_file_frame.open();
        return;
    }

    // Sets up the media library frame
    pdf_file_frame = wp.media.frames.file_frame = wp.media({
        title: pdf_meta.title,
        button: { text:  pdf_meta.button },
        library: { type: 'application/pdf' },
        multiple: false
    });

    // Runs when an image is selected.
    pdf_file_frame.on('select', function(){

        // Grabs the attachment selection and creates a JSON representation of the model.
        var media_attachment = pdf_file_frame.state().get('selection').first().toJSON();

        // Sends the attachment URL to our custom image input field.
        $('#pdf-lesson-url').val(media_attachment.url);
    });

    // Opens the media library frame.
    wp.media.editor.open();
});

});

我已经搜索了这个问题,但没有出现令人满意的结果。我可能使用了错误的搜索短语,但事实是我不知道这里发生了什么,特别是当你得到自定义对话框以显示它工作正常时。

非常感谢任何帮助。

感谢阅读这篇文章的所有人。

2 个答案:

答案 0 :(得分:0)

尝试在.unbind('click')之前添加.click(function())

$('#pdf-lesson-url-button').unbind('click').click(function(e){

这可能有用,在运行自定义点击功能之前解除默认点击功能。

答案 1 :(得分:0)

我终于解决了它,并且几乎总是如此,它并不那么困难。我从示例中复制了代码,当他们使用自定义媒体上传器时,在我的代码的最后一行中,默认的是打开的。改变了......

wp.media.editor.open();

为...

pdf_file_frame.open();

那就做到了。

感谢@Calvin让我重新思考。