Расширение wp.media.model: запрос медиа из другого блога сети и обновление вида
9 февр. 2013 г., 21:37:35
Просмотры: 1.12K
Голосов: 1
Я пытаюсь расширить новый wp.media.model, чтобы пользователи могли выбирать любой блог в сети и загружать связанную медиатеку в представление содержимого библиотеки.
В старом thickbox мы просто вызывали switch_to_blog()
и обновляли thickbox.
Я хотел бы остаться в рамках новых backbone.js media-views и media-models (открыт для других предложений), но у меня возникают проблемы с получением результатов wp.media.query() из правильного блога. Я вызываю switch_to_blog() с использованием метода wp.media.ajax, и глобальные переменные устанавливаются правильно. Однако результат переменной query ниже - это объект вложений для исходного блога, а не для того, на который переключились.
javascript:
/*global blogs */ //Объект блогов сети, переданный через wp_localize_script
(function ($) {
"use strict"; // jshint ;_;
var current = blogs['current_blog'];
var Blogs = blogs['UserBlogs'];
$(function() {
var media = wp.media.editor.add('content');
media.on('open', function() {
var html = $("<select>", {name:'blog_id', id: 'blog_id'});
$.each(Blogs, function (index, blog) {
if( 1 == index ) { return; }
html.append($("<option>", {value:blog.userblog_id, html:blog.domain}).prop({ selected: blog.userblog_id == current}));
});
$(".attachment-filters").after(html);
$("select#blog_id").change(function () {
var str = "";
$("select#blog_id option:selected").each(function () {
str += $(this).val();
var options = {
type: 'POST',
url: ajaxurl,
data: {
blog: str
}
};
wp.media.ajax('switch_blog', options );
var query = wp.media.query();
console.log(query);
});
})
});
});
}(jQuery));
PHP:
public static function _switch_blog() {
global $blog_id;
$current = $blog_id;
$blog = isset( $_POST['blog'] ) ? intval( $_POST['blog'] ) : false;
$result = false;
if ( (bool)$blog )
$result = switch_to_blog( (int)$blog );
if ( $result )
echo json_encode( array( 'success' => $result, 'response' => 'Switched from: '.$current. ' to '.$blog_id ) );
exit;
}

Chris_O
20.6K
Комментарии
Похожие вопросы
10
ответов