问题包括wp_enqueue_media - WordPress

时间:2014-10-19 21:10:45

标签: php jquery wordpress

我正在构建一个使用WordPress功能的自定义界面,我想要使用的特定区域是WordPress的媒体部分。我首先包括WordPress的核心文件:

$location = $_SERVER['DOCUMENT_ROOT'] . "/wordpress";

include($location.'/wp-config.php');
include($location.'/wp-load.php');
include($location.'/wp-includes/pluggable.php');
global $wpdb;
if( !isset($wpdb) )
{
    include($location.'/wp-config.php');
    include($location.'/wp-includes/wp-db.php');
}

在我使用的媒体文件中:wp_enqueue_media()允许我在用户从其帐户上传媒体时访问媒体查看器。

我用来运行媒体请求的JS脚本如下:

$('.add-media').on('click', function( event ){
    var file_frame;
    var wp_media_post_id = wp.media.model.settings.post.id; // Store the old id
    event.preventDefault();

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

    // Create the media frame.
    file_frame = wp.media.frames.file_frame = wp.media({
      title: jQuery( this ).data( 'uploader_title' ),
      button: {
        text: jQuery( this ).data( 'uploader_button_text' ),
      },
      multiple: true  // Set to true to allow multiple files to be selected
    });

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

        var selection = file_frame.state().get('selection');

        selection.map( function( attachment ) {

          attachment = attachment.toJSON();
          // Do something with attachment.id and/or attachment.url here

          $(".load-attachments").append('<div class="singleImg"><a href="'+attachment.url+'" class="shadowbox"><img src="'+attachment.url+'" width="100px" height="100px"/></a><input type="hidden" class="fileURL load-single-attachment" value="'+attachment.id+'"/><span class="removeImg remove"> X </span></div>');
          $(".removeImg").bind('click', function(){
             $(this).parent().remove(); 
          });

        });

    });

    // Finally, open the modal
    file_frame.open();
});

这里的问题是,在运行add-media事件时,wp未定义。现在我不确定为什么会这样。有什么想法或建议吗?

1 个答案:

答案 0 :(得分:0)

查看文档后,我无法弄清楚为什么会这样。但我找到了解决方案。使用wp_footer()时会调用一些最终文件。如果没有这个,你的JavaScript文件都不会运行。

因此,将来如果您正在开发应用程序并希望使用WordPress核心功能,请确保在应用程序结束时包含wp_footer(),以确保您不会遇到{{1} }未在wp中定义。