Der WP Media Uploader wird nur einmal auf der Optionsseite geladen

Ein seltsames Problem passiert mit mir, das ich nicht beheben kann. Auf der Seite mit den Themenoptionen habe ich Optionen zum Hochladen von Bildern hinzugefügt, eines für das Logo und eines für das Hintergrundbild. Hier ist mein HTML

So habe ich das JS in die Warteschlange gestellt

 function media_uploader_enqueue() { wp_enqueue_media(); wp_register_script('image-upload-js', get_stylesheet_directory_uri(). '/js/image-upload-js.js', true, '1.0.1'); wp_enqueue_script('image-upload-js'); } add_action('admin_enqueue_scripts', 'media_uploader_enqueue'); 

Das habe ich in die image-upload-js.js Datei geschrieben

 jQuery(document).ready(function($){ var mediaUploader; $('#upload-button').click(function(e) { e.preventDefault(); if (mediaUploader) { mediaUploader.open(); return; } mediaUploader = wp.media.frames.file_frame = wp.media({ title: 'Choose Image', button: { text: 'Choose Image' }, multiple: false }); mediaUploader.on('select', function() { attachment = mediaUploader.state().get('selection').first().toJSON(); $('#image-url').val(attachment.url); }); mediaUploader.open(); }); }); 

Das nervige Problem

Der Medien-Uploader öffnet das Logo- Bildfeld, nicht jedoch das BG-Bild . Ich kann auch Optionen speichern und alles ist eingestellt. Wenn ich die URL manuell in das BG-Bildtextfeld lege, ist es die Datei. Nur der Medien-Uploader funktioniert dafür nicht. Wenn ich den HTML-Block verschiebe, wird der Uploader nur für den ersten Block geöffnet. Irgendein Grund, warum dies geschieht. Vielen Dank

Solutions Collecting From Web of "Der WP Media Uploader wird nur einmal auf der Optionsseite geladen"

Der Grund dafür, dass der Medien-Uploader beim Klicken auf die zweite Schaltfläche nicht geöffnet wird, besteht darin, dass beide Schaltflächen dieselbe ID haben, die Sie auch an die function zum Öffnen des Uploaders binden. Element-IDs sollten immer eindeutig sein, daher erkennt der .click-functions-Listener nur, wenn der Benutzer auf die erste Schaltfläche klickt (= der erste mit id = “image-url”). Versuchen Sie, eine gemeinsame class für beide Schaltflächen zuzuweisen, und binden Sie die Media Uploader-function an die class, um dieses Problem zu beheben.

Sie werden das selbe Problem haben, wenn Sie das Bild für Ihr BG-Bild auswählen, da beide äußeren Eingänge dieselbe ID haben (“image-url”), was bedeutet, dass das BG-Bild dem Logo-Bild zugewiesen wird. Um dieses Problem zu umgehen, können Sie mithilfe der jQuery traversing-functionen die übergeordnete Schaltfläche der aktuellen Eingabe abrufen und die Datei .val (attachment.url) für dieses Element aufrufen.