Extender wp.media.model, consultar medios de diferentes blogs en la red y actualizar la vista
Estoy intentando extender el nuevo wp.media.model para permitir a los usuarios seleccionar cualquier blog de la red y cargar la biblioteca de medios asociada en la vista de contenido de la biblioteca.
En el antiguo thickbox simplemente llamábamos switch_to_blog()
y actualizábamos el thickbox.
Me gustaría mantenerme dentro de las nuevas vistas y modelos de medios de backbone.js (abierto a otras sugerencias), pero estoy teniendo problemas para que wp.media.query() devuelva los resultados del blog correcto. Estoy llamando a switch_to_blog() usando el método wp.media.ajax y las variables globales correctas se están estableciendo. El resultado de la variable query a continuación es un objeto de adjuntos para el blog original, no para el blog al que se ha cambiado.
javascript:
/*global blogs */ //Objeto de blogs de la red pasado mediante 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' => 'Cambiado desde: '.$current. ' a '.$blog_id ) );
exit;
}
