Extinderea wp.media.model, interogarea media de pe un alt blog din rețea și actualizarea vizualizării
9 feb. 2013, 21:37:35
Vizualizări: 1.12K
Voturi: 1
Încerc să extind noul wp.media.model pentru a permite utilizatorilor să selecteze orice blog din rețea și să încarce biblioteca media asociată în vizualizarea conținutului.
În vechiul thickbox apelam simplu switch_to_blog()
și reîmprospătam thickbox-ul.
Aș dori să rămân în noile media-views și media-models bazate pe backbone.js (sunt deschis și la alte sugestii), dar am probleme în a face wp.media.query() să returneze rezultatele de pe blogul corect. Folosesc switch_to_blog() prin metoda wp.media.ajax și variabilele globale sunt setate corect. Rezultatul variabilei query de mai jos este un obiect de atașamente pentru blogul original, nu pentru blogul la care am trecut.
javascript:
/*global blogs */ //Obiect cu blogurile din rețea transmis prin 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' => 'Schimbat de la: '.$current. ' la '.$blog_id ) );
exit;
}

Chris_O
20.6K
Comentarii
Întrebări similare
3
răspunsuri