Intereting Posts
Как добавить URL-адрес изображения из внешнего RSS-канала и вставить в настраиваемое поле? Пользовательский тип сообщения не отображается на странице категории Кажется, что admin_post_ {action} не выполняет Мультисайты с разными корневыми каталогами Добавить настраиваемое поле в категорию настраиваемого типа сообщения Можем ли мы получить ответ функции WP ADMIN AJAX по умолчанию в функции.php Отключить механизм экономии по умолчанию для пользовательских таксономий Admin wp_ajax hook возвращает 0 Невозможно использовать теги Tag Post Type как изменить текст в меню навигации WP_Query, который будет искать сообщения после 2 недель назад или с определенным метазначением Получение значения из таблицы базы данных в зависимости от значения поля передача параметров для выполнения действия с короткого кода на wp_footer Способ быстро создавать страницы Войти с Ajax – Первый раз Войти Переадресация на страницу профиля

Получить информацию о вложении / изображении в JS

Существует ли конкретный метод получения информации о вложении / изображении в JS? У меня есть идентификатор вложения и до того, как я использую

add_action("wp_ajax_get_image_info", "get_image_info"); 

Я хотел бы посмотреть, есть ли собственный метод для этого JT только для входа.

Короче говоря, вы можете получить информацию о приложении с помощью функции wp.media.attachment() . Это даст вам полные данные, пока это приложение уже загружено другим скриптом или всплывающим wp.media() .

Если данные еще не загружены, вы можете загрузить их с помощью .fetch() в приложении, который работает, потому что это Backbone.Collection . Это Collection потому что вложение может содержать в себе несколько выбранных файлов.

 // preload your attachment wp.media.attachment(ID).fetch().then(function (data) { // preloading finished // after this you can use your attachment normally wp.media.attachment(ID).get('url'); }); 

Легкий способ предварительной загрузки:

 function preloadAttachment(ID, callback) { // if it doesn't have URL we probably have to preload it if (wp.media.attachment(ID).get('url')) { wp.media.attachment(ID).fetch().then(function () { callback(wp.media.attachment(ID); }); return; } callback(wp.media.attachment(ID)); } // USAGE: preloadAttachment(10, function (attachment) { console.log(attachment.get('url')); console.log(wp.media.attachment(10).get('url')); // this also works }) 

И именно так вы захотите сделать предварительную загрузку более одного приложения в одном запросе AJAX.

 // An array of attachments you may want to preload var attachment_ids = [10, 11, 12, 13]; wp.media.query({ post__in: attachment_ids }) .more() .then(function () { // You attachments here normally // You can safely use any of them here wp.media.attachment(10).get('url'); }) 

Обратите внимание, что запрос AJAX, выполненный с помощью wp.media.query() , разбит на страницы. Если вам нужно надежное решение для загрузки много и много вложений, вы должны hasMore() каждую страницу с помощью hasMore() и more() .

Отказ от ответственности:

Я использовал этот метод, прежде чем wp.media.query о wp.media.query но у него есть штраф за выполнение одного запроса на предварительно загруженное вложение. Но он также имеет приятную функцию – он не делает никакого запроса, если все вложения, которые необходимо предварительно загрузить, уже находятся в загруженном состоянии.

 function preloadMultipleAttachments(attachment_ids) { // I'd rather use Promise.all() here but they do not work with // jQuery deferreds :/ if (jQuery.when.all===undefined) { jQuery.when.all = function(deferreds) { var deferred = new jQuery.Deferred(); $.when.apply(jQuery, deferreds).then( function() { deferred.resolve(Array.prototype.slice.call(arguments)); }, function() { deferred.fail(Array.prototype.slice.call(arguments)); }); return deferred; } } return jQuery.when.all( attachment_ids.filter(function (attachment_id) { return ! wp.media.attachment(attachment_id).get('url'); }).map(function (id) { return wp.media.attachment(id).fetch(); }) ); }, 

Jetpack имеет JSON API, который позволяет вам запрашивать почти все в данной установке. http://jetpack.me/support/json-api/