Для начала, основные функции и переопределения, насколько я знаю в настоящее время. Возможно, есть лучшие решения, но у меня было только два дня с 3.5 еще:
// open modal - bind this to your button
if ( typeof wp !== 'undefined' && wp.media && wp.media.editor )
wp.media.editor.open( ##unique_id_here## );
// backup of original send function
original_send = wp.media.editor.send.attachment;
// new send function
wp.media.editor.send.attachment = function( a, b) {
console.log(b); // b has all informations about the attachment
// or whatever you want to do with the data at this point
// original function makes an ajax call to retrieve the image html tag and does a little more
};
// wp.media.send.to.editor will automatically trigger window.send_to_editor for backwards compatibility
// backup original window.send_to_editor
window.original_send_to_editor = window.send_to_editor;
// override window.send_to_editor
window.send_to_editor = function(html) {
// html argument might not be useful in this case
// use the data from var b (attachment) here to make your own ajax call or use data from b and send it back to your defined input fields etc.
}
Это не полный рабочий ответ. Вы должны сами определять и отслеживать поля ввода и т. Д. Это просто должно помочь вам начать. Если у вас есть более конкретные вопросы, просто спросите.
И убедитесь, что переназначили исходные функции, когда ваш скрипт будет выполнен.
Вытащил из комментариев:
Как я могу прослушать закрытое событие лайтбокса?
// add listener:
wp.media.view.Modal.prototype.on('close', function(){ console.log('triggered close'); }
Вот небольшое руководство о том, как использовать загрузчик мультимедиа WP 3.5 в настройках темы. Это то, что я придумал, и это прекрасно работает для меня. Дайте мне знать, если вы найдете лучшее решение.
Вот как я реализовал код в опциях моей темы:
Обновить
Этот код работает только на странице редактирования поста. Чтобы это работало на странице настроек темы, нужно добавить
wp_enqueue_media();
источник
Я делаю почти то же самое, что он еще не готов, но он работает:
в php:
Javascript:
Это позволит вам загрузить и отправить ссылку на изображение (любого размера) на
<input>
элемент.Я пытаюсь сделать это как настройку, и это работает, только сейчас мне нужен только надежный способ отправить идентификатор вложения на
<input>
источник
Я думаю, что @janw понял это правильно, но я не смог заставить что-то работать. Ян вставляет кнопку библиотеки мультимедиа, используя:
а затем упреждает действие по умолчанию, используя:
Проблема, с которой я столкнулся, заключается в том, что при вставке медиа-кнопки таким способом не назначается идентификатор ссылки «default_featured_image_button». Фактически это не добавляет никакого идентификатора к вставленной ссылке. Вот что я сделал, чтобы заставить его работать.
Я добавил эту строку в функцию обратного вызова мета-бокса сразу после поля ввода:
Затем я поставил в очередь свой пользовательский файл jquery и файл Thickbox CSS, также в моем файле functions.php, используя:
Наконец, мой файл image-set.js содержал следующее:
Вы заметите, что я использовал переменные для хранения имени и идентификатора поля ввода, которое находится непосредственно перед ссылкой, которая вызывает jQuery. Таким образом, этот код можно многократно использовать на одной и той же странице. Вам просто нужно назначить класс всем кнопкам или использовать отдельные идентификаторы для кнопок в вашем jquery, как я сделал. Я надеюсь, что это поможет кому-то, так как ответ Яна помог мне.
источник
Я знаю, что это старый пост, но я просто хочу поделиться своими выводами:
Чтобы открыть редактор мультимедиа, мы вызываем эту функцию
Редактор мультимедиа в основном проверяет наличие функции tinyMCE editor (
window.tinymce
), а затем Quicktags (window.QTags
) для передачи содержимого.Для моего подхода к получению контента я назначил
window.QTags
пользовательский объект, у которого естьinsertContent()
метод:Ссылка: phpxref
источник