2017-01-21 17 views
2

編集: wp_enqueue_media()は問題なく動作していますが、wp.mediaを含むスクリプトは含まれていないようです。wp.mediaはWordpress Media Uploaderを使用して定義されていません

私はカスタムプラグインWordpressのメディアアップローダを使用しようとしますが、次のエラーを取得しておくよ

TypeError: undefined is not an object (evaluating 'wp.media.frames') 

私のJavascriptのコード:

jQuery(document).ready(function(){ 

    var mediaUploader; 

    jQuery('#upload-button').click(function(e) { 
    e.preventDefault(); 
    // If the uploader object has already been created, reopen the dialog 
     if (mediaUploader) { 
     mediaUploader.open(); 
     return; 
    } 
    // Extend the wp.media object 
    mediaUploader = wp.media.frames.file_frame = wp.media({ 
     title: 'Choose Image', 
     button: { 
     text: 'Choose Image' 
    }, multiple: false }); 

    // When a file is selected, grab the URL and set it as the text field's value 
    mediaUploader.on('select', function() { 
     var attachment = mediaUploader.state().get('selection').first().toJSON(); 
     jQuery('#logo').val(attachment.url); 
    }); 
    // Open the uploader dialog 
    mediaUploader.open(); 
    }); 

}); 

の.jsファイルがあります

/* Add the media uploader script */ 
    function my_media_lib_uploader_enqueue() { 
    wp_enqueue_media(); 
    wp_register_script('media-lib-uploader-js', plugins_url('media-lib-uploader.js' , __FILE__), array('jquery')); 
    wp_enqueue_script('media-lib-uploader-js'); 
    } 
    add_action('admin_enqueue_scripts', 'my_media_lib_uploader_enqueue'); 
+0

ヒントとして、「競合のない」ドキュメントを用意することで、時間と労力を節約することができます: 'jQuery(function($){//ここでは、jQueryと入力する代わりに$を使用できます。 $( '#upload-button')。クリック....}); ' –

+1

あなたがエラーを受けたときに**知っておくと便利です。さらに、デバッグを使用すると、コード内のどこにエラーがスローされるのかを伝えることもできます。最後に、これはあなたの最初の試みですか?あなたはこれまで働いていましたか?もしそうでなければ、私は公式のWP文書の例に従うことを強くお勧めします:[wp.media](https://codex.wordpress.org/Javascript_Reference/wp.media) –

+0

はい、私はかつてそれは働いていましたが突然停止。これは私のサイトが4.7.1に更新された頃のことでした。アップロードボタンをクリックするとエラーが発生します。エラーは、 'mediaUploader = wp.media.frames.file_frame = wp.media({' – Max

答えて

2

解決済みの問題は、wp_enqueue_media()でした。スクリプトをフッターページに呼び出します。どこかでdie()関数を使用していたので、スクリプトはロードされませんでした。