2017-01-21 12 views
2

편집 : 다른 변형 스크립트도 작동하지 않는 것 같습니다. wp_enqueue_media()는 괜찮 았지만 wp.media가 포함 된 스크립트는 포함되지 않았습니다.wp.media는 Wordpress 미디어 업 로더를 사용하여 정의되지 않았습니다

나는 사용자 정의 플러그인에서 워드 프레스 미디어 업 로더를 사용하려고하지만, 다음과 같은 오류가 계속 해요 :

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

내 자바 스크립트 코드

:

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'). click ....}); ' –

+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() 함수를 사용했기 때문에 스크립트가로드되지 않았습니다.