Estendere wp.media.model, query media da un blog diverso sulla rete e aggiornare la vista
9 feb 2013, 21:37:35
Visualizzazioni: 1.12K
Voti: 1
Sto cercando di estendere il nuovo wp.media.model per permettere agli utenti di selezionare qualsiasi blog nella rete e visualizzare la libreria media associata nella vista del contenuto.
Nella vecchia thickbox bastava chiamare switch_to_blog()
e aggiornare la thickbox.
Vorrei rimanere all'interno delle nuove viste e modelli backbone.js media-views e media-models (sono aperto ad altri suggerimenti) ma ho difficoltà a far restituire a wp.media.query() i risultati dal blog corretto. Sto chiamando switch_to_blog() usando il metodo wp.media.ajax e le variabili globali vengono impostate correttamente. Il risultato della variabile query qui sotto è un oggetto di allegati per il blog originale, non per quello a cui siamo passati.
javascript:
/*global blogs */ //Oggetto dei blog della rete passato via 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
Commenti
Domande correlate
3
risposte