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');
ヒントとして、「競合のない」ドキュメントを用意することで、時間と労力を節約することができます: 'jQuery(function($){//ここでは、jQueryと入力する代わりに$を使用できます。 $( '#upload-button')。クリック....}); ' –
あなたがエラーを受けたときに**知っておくと便利です。さらに、デバッグを使用すると、コード内のどこにエラーがスローされるのかを伝えることもできます。最後に、これはあなたの最初の試みですか?あなたはこれまで働いていましたか?もしそうでなければ、私は公式のWP文書の例に従うことを強くお勧めします:[wp.media](https://codex.wordpress.org/Javascript_Reference/wp.media) –
はい、私はかつてそれは働いていましたが突然停止。これは私のサイトが4.7.1に更新された頃のことでした。アップロードボタンをクリックするとエラーが発生します。エラーは、 'mediaUploader = wp.media.frames.file_frame = wp.media({' – Max