Oi,
Atualmente, estou construindo um tema WordPress para um diretório de negócios online e preciso ter uma página de perfil de usuários que possa ser editada no front end do site.
De acordo com esta situação, comecei a usar o Media Uploader, a fim de permitir que o usuário final insira uma imagem de perfil.
Eu sei, atualmente existem muitos sites que mostram a forma de usar o novo Media Uploader 3.5, mas apenas em um local encontrei a forma de pré-selecionar a imagem usada pelo usuário até agora.
Este é o código completo:
HTML
<a href="javascript:void(0);" id="profile_picture" data-picture="350">
<img src="http://www.image.to/display.jpg" />
</a>
JavaScript
var $profile_picture = $('#profile_picture');
var $media_dialog = null;
if($profile_picture.length > 0)
{
$media_dialog = wp.media.frames.file_frame = wp.media(
{
title : 'Choose a picture',
button : {
text : 'Insert picture'
},
multiple : false
}
);
$media_dialog.on(
'open',
function()
{
var selection = $media_dialog.state().get('selection');
var image_id = $profile_picture.attr('data-picture');
attachment = wp.media.attachment(image_id);
attachment.fetch();
selection.add(attachment ? [attachment] : []);
}
);
$media_dialog.on(
'select',
function()
{
attachment = $media_dialog.state().get('selection').first().toJSON();
$('#upload_image').val(attachment.url);
$profile_picture.attr('data-picture', attachment.id).find('img').attr('scr', attachment.url);
}
);
$profile_picture.on(
'click',
function(e)
{
// This is our link - make sure the browser doesn't handle it
e.preventDefault();
// Ignore right-clicks
if(e.button == 2)
{
return;
}
if($media_dialog)
{
$media_dialog.open();
return;
}
}
);
}
Observe também que, se você tiver mais de uma imagem para selecionar, modifique o seguinte código:
$media_dialog.on(
'open',
function()
{
var selection = $media_dialog.state().get('selection');
var image_id = $profile_picture.attr('data-picture');
attachment = wp.media.attachment(image_id);
attachment.fetch();
selection.add(attachment ? [attachment] : []);
}
);
Com isso:
$media_dialog.on(
'open',
function()
{
var selection = $media_dialog.state().get('selection');
var ids = '1,3,14,325,613,36';
ids = ids.split(',');
ids.forEach(
function(id)
{
attachment = wp.media.attachment(id);
attachment.fetch();
selection.add(attachment ? [attachment] : []);
}
);
}
);
NOTA: A solução para este problema que encontrei pode ser encontrada aqui .
Claro, você pode modificar o código para atender às suas necessidades. Coloquei aqui apenas o código para fins de demonstração.