Подключение к медиа-библиотеке для загрузки изображений (НЕ связано с каким-либо сообщением)

Мой старый вопрос:

Я сделал тему с вращающимся баннером, обычная вещь. Поэтому я хочу, чтобы пользователи могли выбирать изображения. Я думаю, вместо того, чтобы внедрять мою собственную загрузку, я думаю, что ее лучше разрешить пользователям использовать медиабиблиотеку, как мне это сделать?

Новый

До сих пор у меня что-то вроде ниже

functions.php

// init wordpress media upload stuff ... if (is_admin() && isset($_GET['page']) && $_GET['page'] == 'elem_opts') { wp_enqueue_style('thickbox'); wp_enqueue_script('media-upload'); wp_enqueue_script('thickbox'); wp_register_script('elem_adm_js', get_bloginfo('template_directory') . '/js/admin.js', array('jquery', 'media-upload', 'thickbox')); wp_enqueue_script('elem_adm_js'); } 

admin.js

 jQuery(document).ready(function($) { $('#elem_upload_logo').click(function() { tb_show('', 'media-upload.php?type=image&TB_iframe=true'); return false; }); window.send_to_editor = function (html) { imgurl = $('img', html).attr('src'); $('input[name=elem_opts[h_image]]').val(imgurl); tb_remove(); } }); 

Всплывающая загрузочная библиотека мультимедиа, я могу выбрать файлы, но при попытке загрузить их ничего не происходит. В Firebug я вижу следующее:

Solutions Collecting From Web of "Подключение к медиа-библиотеке для загрузки изображений (НЕ связано с каким-либо сообщением)"

Вот 3 ссылки, чтобы вы начали, ваш вопрос должен быть более понятным, хотите ли вы, чтобы это работало как заголовок двадцатьten, используя настраиваемое поле параметров темы, категорию?

Как использовать загрузку мультимедиа на странице параметров темы?
Как я могу добавить поле для загрузки изображения непосредственно в пользовательскую панель записи?
Прикрепление носителя к пользовательским сообщениям без редактора
Создание пользовательского типа персонализации изображений?

1) Я думаю, вы должны изменить JS-файл. send_to_editor – это обработчик WordPress по умолчанию, который вставляет изображение в редактор. В вашем коде вы его полностью заменили. Это не круто. Вы должны сделать резервную копию (я не уверен, что это может исправить ошибки, но, по крайней мере, это сделает ваш код более корректным):

Что-то в этом коде я объясню ниже

 jQuery(document).ready(function($) { $('#elem_upload_logo').click(function() { var backup = window.send_to_editor, // backup the original 'send_to_editor' function which adds images to the editor post_id = $(this).attr('rel'); // get post ID // now you can change the default behavior window.send_to_editor = function (html) { // check the returned HTML code and do something with it // restore the default behavior window.send_to_editor = backup; } tb_show('', 'media-upload.php?type=image&TB_iframe=true&post_id=' + post_id); return false; }); }); 

2) Еще одна проблема с вашим кодом заключается в том, что возвращаемый html не имеет тегов img . Фактически, это зависит от того, как пользователи выбирают способ связывания изображения (они могут связывать изображение со страницей вложения, файлом изображения или без ссылки в любом месте). Приведенный выше код работает только тогда, когда изображение связано с файлом изображения.

Вы можете проверить эту ситуацию, вставив изображение в редактор, изменив способ привязки изображения, вы увидите фактический возвращаемый html.

3) Последней проблемой, которую я обнаружил при просмотре ваших ошибок, является то, что вы не объявили идентификатор сообщения. У загрузчика мультимедиа Thinkbox должен быть идентификатор сообщения.

Чтобы исправить это, вы можете использовать простой трюк: в вашем PHP-коде, который эхо- #elem_upload_logo , установите его rel="<?php echo $post->ID; ?>" И в вашем JS-скрипте извлеките этот атрибут и передайте его в URL-адрес загрузчика мультимедиа (в качестве кода выше).