Bearbeiten: Andere Variationen von Skripten scheinen auch nicht zu funktionieren, wp_enqueue_media() geht in Ordnung, aber es sieht so aus, als ob das Skript, das die wp.media enthält, nicht enthalten ist.
Ich versuche, den WordPress Media Uploader in einem benutzerdefinierten Plugin zu verwenden, erhalte aber immer wieder die folgende Fehlermeldung:
TypeError: undefined is not an object (evaluating 'wp.media.frames')
Mein Javascript-Code:
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();
});
});
Die .js-Dateien werden wie folgt registriert:
/* 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');
Als Tipp, Sie können sich Zeit/Mühe sparen, indem Sie das „konfliktsichere“ Dokument bereithalten:
jQuery(function($) { // inside here, you can use $ instead of typing jQuery, such as $('#upload-button').click....});
– zufälliger_Benutzername
21. Januar 2017 um 14:31 Uhr
OK, um zu helfen, wäre es nützlich zu wissen Wenn Sie erhalten den Fehler. Darüber hinaus könnten Sie uns mit dem Debugging auch mitteilen wo in deinem Code der Fehler endet immer geworfen. Ist dies Ihr erster Versuch? Hattest du es jemals zum Laufen? Wenn nicht, würde ich dringend empfehlen, dem Beispiel in den offiziellen WP-Dokumenten zu folgen: wp.media
– zufälliger_Benutzername
21. Januar 2017 um 14:35 Uhr
Ja, ich hatte es einmal funktioniert, aber plötzlich hörte es auf. Das war ungefähr zu der Zeit, als meine Website auf 4.7.1 aktualisiert wurde. Der Fehler tritt auf, wenn ich auf die Schaltfläche Hochladen klicke. Der Fehler wird in die Zeile geworfen
mediaUploader = wp.media.frames.file_frame = wp.media({
– max
21. Januar 2017 um 14:41 Uhr
Verwenden Sie Ihre Entwicklerkonsole, um das Skript zu debuggen: Setzen Sie einen Pausenpunkt in dieser Zeile, und dann können Sie Dinge wie den Wert von /console.log inspizieren
wp
undwp.media
etc.– zufälliger_Benutzername
21. Januar 2017 um 14:43 Uhr
Auch wenn ich den Code aus den offiziellen WP-Dokumenten verwende, erhalte ich die folgende Fehlermeldung:
TypeError: wp.media is not a function. (In 'wp.media', 'wp.media' is undefined)
..– max
21. Januar 2017 um 14:52 Uhr