在将popper.js用于bootstrap 4之后,wp.media.open()时的TypeError:this.each

时间:2017-11-30 作者:DmitriyRF

我正在通过bootsrap 4框架创建页面元盒布局。我向admin-enqueue添加了新的js文件:jquery-3.0.0、jquery-migrate-3.0.1以及popper-1.12.3和bootstrap。此外,还在metabox中创建了自定义字段。我得到一个图像链接使用管理媒体模式框架。我的意思是框架使用jQuery来获取wp。媒体对象,但在添加popper之后。js wp。媒体open()函数获取了未捕获的TypeError:this。在某些文件中,每个都不是函数。enter image description hereenter image description here有人可以解决这个问题吗?

1 个回复
SO网友:DmitriyRF

我已经通过更正jQuery代码修复了这个问题。这是一个例子

jQuery( document ).ready(function($) {
// Instantiates the variable that holds the media library frame.
var file_frame, meta_image_preview, meta_image;
$(\'.image-upload\').on(\'click\', function( event ){

    meta_image_preview = $(this).parent().parent().children(\'.image-preview\');
    meta_image = $(this).parent().children(\'.meta-image\');
    event.preventDefault();

    // If the media frame already exists, reopen it.
    if ( file_frame ) {
        // Open frame
        file_frame.open();
        return;
    }

    // Create the media frame.
    file_frame = wp.media.frames.file_frame = wp.media({
        title: \'Select a image to upload\',
        button: {
            text: \'Use this image\',
        },
        multiple: false // Set to true to allow multiple files to be selected
    });

    // When an image is selected, run a callback.
    file_frame.on( \'select\', function() {

        // We set multiple to false so only get one image from the uploader
        media_attachment = file_frame.state().get(\'selection\').first().toJSON();

        // Do something with attachment.id and/or attachment.url here
        meta_image.val(media_attachment.url);
        meta_image_preview.children(\'img\').attr(\'src\', media_attachment.url);
    });
        // Finally, open the modal
    file_frame.open();

});
});
HTML

<div class="image-section">
    <p>
        <label for="section-image">Image Upload</label><br>
        <input type="text" name="meta[image]" id="section-image" class="meta-image regular-text" value="<?php echo isset($meta[\'image\']) ? $meta[\'image\']: \'\'; ?>">
        <input type="button" class="button image-upload" value="Browse">
    </p>

    <div class="image-preview">
        <img src="<?php echo isset($meta[\'image\']) ? $meta[\'image\'] : \'\'; ?>" style="max-width: 250px;">
    </div>
</div>

结束

相关推荐

Creating custom login errors

我希望能够创建自定义登录错误。例如,如果用户未登录就访问了受限区域,那么我将重定向到wp-login.php?ref=access 我想输出Restricted area, please login to continue. 或者类似的东西。你知道怎么做吗。我发现有过滤器login_errors 但是我在出现的代码中找不到其他地方,除了登录页面本身。最后,我真的不想为了做到这一点而改变任何核心文件。我花费了大量的时间和精力来确保wordpress的核心完全没有受到影响,以便我可以升级它。有人有什么想法吗?