Манипулирование загрузчиком Мультимедиа
Хорошо. Я постараюсь объяснить это как можно лучше, так что откровенно со мной. В любом случае, я пытаюсь включить загрузчик мультимедиа по умолчанию в свой плагин.
В настоящее время мне успешно удалось использовать фильтр attachment_fields_to_edit
, чтобы скрыть большинство полей ввода, оставив только поля заголовка и альтернативного текста, а также пользовательскую кнопку отправки. При нажатии эта кнопка получает URL-адрес изображения и помещает его в div
на родительской странице.
В любом случае, так что вот мой проблема. Все, что касается самого загрузчика, функционирует так, как я хочу, но в настоящее время фильтр применяется к загрузчику мультимедиа в сообщениях, страницах, медиатеке и т. Д. Я хочу, чтобы альтернативные поля и настраиваемая кнопка отображались только в моем плагине, но не в другом месте.
Я перепробовал все, но не могу заставить это работать. Мне удалось применить свой собственный запрос к media-upload.php URL, и таким образом я мог бы сделать так, чтобы альтернативные поля отображались только в моем плагине на вкладка "библиотека" thickbox, но при загрузке нового изображения отображались поля по умолчанию, потому что Wordpress использует альтернативный файл для загрузки изображения; async-upload.php .
Вот вся функция: http://pastebin.com/5vpecMvL
Просто некоторая информация о различных функциях: riva_slider_pro_info()
- это функция, которая возвращает массив значений. riva_slider_pro_uri( $search )
получает $_SERVER['REQUEST_URI'] и сохраняет его в переменной, ищет в нем параметр $search и возвращает значение true или ложь.
На вкладке "Библиотека" в толстом поле загрузчика мультимедиа он возвращает true
, потому что я передал дополнительный запрос на media-upload.php URL-адрес (например, "загрузка мультимедиа.php?post_id=0$слайд-шоу=истина&тип=изображение&tb_iframe=1"). НО он возвращает false
после того, как пользователь только что загрузил новое изображение в тот же толстый ящик, потому что он использует async-upload.php вместо этого файл. Не уверен, как я мог бы передать запрос по этому URL-адресу, если бы можно было заставить его работать так путь.
Я понимаю, что это может быть трудно понять, но я изо всех сил старался объяснить это. Я буквально рву на себе волосы из-за этого и потратил смешное количество времени, пытаясь понять это. Цените любые комментарии или предложения, а в идеале - решение! Заранее спасибо.
1 answers
В итоге я запустил толстый ящик, загруженный вручную с помощью события jquery click. затем с помощью setInterval я смог скрыть нужные мне фрагменты.
JQuery(документ).готово(функция($) {
$('.specialclass').click(function() {
//get post id from somewhere (for me this was the row column
string = $(this).parents('tr.type-portfolio').attr('id');
if(/post-(\d+)/.exec(string)[1]) post_id = parseInt(/post-(\d+)/.exec(string)[1], 10);
tbframe_interval = setInterval(function() {
//remove url, alignment and size fields- auto set to null, none and full respectively
$('#TB_iframeContent').contents().find('.url').hide().find('input').val('');
$('#TB_iframeContent').contents().find('.align').hide().find('input:radio').filter('[value="none"]').attr('checked', true);
$('#TB_iframeContent').contents().find('.image-size').hide().find('input:radio').filter('[value="full"]').attr('checked', true);
}, 2000);
if(post_id) tb_show('', 'media-upload.php?post_id='+post_id+'&type=image&tab=library&TB_iframe=true'); //tab sets the opened TB window to show library by default
return false;
});
});