Манипулирование загрузчиком Мультимедиа


Хорошо. Я постараюсь объяснить это как можно лучше, так что откровенно со мной. В любом случае, я пытаюсь включить загрузчик мультимедиа по умолчанию в свой плагин.

В настоящее время мне успешно удалось использовать фильтр 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-адресу, если бы можно было заставить его работать так путь.

Я понимаю, что это может быть трудно понять, но я изо всех сил старался объяснить это. Я буквально рву на себе волосы из-за этого и потратил смешное количество времени, пытаясь понять это. Цените любые комментарии или предложения, а в идеале - решение! Заранее спасибо.

Author: Matthew Ruddy, 2011-06-19

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;
   });
});
 1
Author: helgatheviking, 2012-01-09 06:40:15