Intereting Posts
Я не могу получить доступ к $ wpdb Как динамически изменять точки текста на пользовательской странице? слайд-шоу не отображается в сообщении с ajax Управление ссылками WordPress Создание пользовательских типов сообщений из записи формы Странная ситуация при попытке получить Github Gist Использование wp_remote_get Как обновить существующую таблицу при обновлении плагина? get_term_children возвращает WP_Error для пользовательской таксономии Получить цвет фона для Live Preview с помощью API настройки темы? Как печатать выходные данные функции get_num_queries от frontend до backend? пользовательский naver nav вопрос с участием ajax Добавить пользовательский элемент меню, который поддерживает подстановочные знаки Перейти к ошибке подключения к другой серверной базе данных Использование nextGen Gallery .. как я могу назвать список всех имен галереи? Использование post_class для стилей сообщений indivdually

Загружать загрузчик WP Media только один раз на странице параметров

Странная проблема со мной, которую я не могу исправить. На моей странице параметров темы я добавил опции для загрузки изображений для логотипа, а другой для изображения backgroud. Вот мой HTML

<table class="form-table"> <tr> <th scope="row"><?php _e('Logo Image'); ?></th> <td><label for="logo_link"> <input id="image-url" type="text" name="logo_link" value="<?php echo get_option('logo_link'); ?>" size="50" /> <input id="upload-button" class="button" type="button" value="Upload Image" /> </label> </td> </tr> <tr> <th scope="row"><?php _e('BG Image'); ?></th> <td><label for="bg_image"> <input id="image-url" type="text" name="bg_image" value="<?php echo get_option('bg_image'); ?>" size="50" /> <input id="upload-button" class="button" type="button" value="Upload Image" /> </label> </td> </tr> </table> 

Это как я заключил соглашение с JS

 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'); для 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'); 

Это то, что я вложил в image-upload-js.js

 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(); }); }); 

Досадная проблема

Загрузочный носитель открывается для поля « Логотип», но не для изображения BG . Я также могу сохранить параметры, и все установлено. Если я поместил URL вручную в текстовое поле изображения BG, это файл. Для этого не работает медиа-загрузчик. Если я сменю блок HTML, загрузчик откроется только для первого блока. Любая причина, почему это происходит. благодаря

Solutions Collecting From Web of "Загружать загрузчик WP Media только один раз на странице параметров"

Причина, по которой загрузчик мультимедиа не открывается при нажатии второй кнопки, заключается в том, что обе кнопки имеют одинаковый идентификатор, который также привязан к функции, открывающей ваш загрузчик. Идентификаторы элементов всегда должны быть уникальными, поэтому прослушиватель функции .click будет обнаруживать, когда пользователь нажимает первую кнопку (= первая с id = "image-url"). Чтобы решить эту проблему, попробуйте назначить общий класс для обеих кнопок и привяжите функцию загрузчика мультимедиа к этому классу.

При выборе изображения для вашего изображения BG вы столкнетесь с той же проблемой, так как оба внешних входа имеют одинаковый идентификатор («URL-адрес изображения»), что означает, что изображение BG будет присвоено логотипу логотипа. Чтобы обойти эту проблему, вы можете использовать функции трассировки дерева jQuery, чтобы получить родителя текущей кнопки ввода и вызвать .val (attachment.url) для этого элемента.