Desejo que os usuários possam fazer upload de fotos usando, add_cap('upload_files')
mas em sua página de perfil, a Biblioteca de mídia mostra todas as imagens que foram enviadas. Como posso filtrar isso para que eles só podem ver as imagens que eles enviados?
Aqui está minha solução no momento ... Estou fazendo uma consulta WP simples, depois um loop na página "Perfil" do usuário
$querystr = " SELECT wposts.post_date,wposts.post_content,wposts.post_title, guid
FROM $wpdb->posts wposts
WHERE wposts.post_author = $author
AND wposts.post_type = 'attachment'
ORDER BY wposts.post_date DESC";
$pageposts = $wpdb->get_results($querystr, OBJECT);
Respostas:
Você sempre pode filtrar a lista de mídia usando um
pre_get_posts
filtro que primeiro determine a página e os recursos do usuário e defina o parâmetro author quando determinadas condições forem atendidas.Exemplo
Usei o limite de exclusão de páginas como uma condição para que administradores e editores ainda vejam a lista completa de mídias.
Há um pequeno efeito colateral, pelo qual não consigo ver nenhum gancho, e isso é com as contagens de anexos mostradas acima da lista de mídia (que ainda mostrará a contagem total de itens de mídia, não a de um determinado usuário - eu considere isso uma questão menor).
Pensei em publicá-lo da mesma forma, pode ser útil ..;)
fonte
No WP 3.7, existe uma maneira muito melhor via
ajax_query_attachments_args
filtro, conforme fornecido na documentação :fonte
Aqui está uma solução completa para postagens e mídia (esse código é especificamente para autores, mas você pode alterá-lo para qualquer função de usuário). Isso também corrige a contagem de post / mídia sem invadir os arquivos principais.
fonte
$_num_posts = array();
Esta é uma versão modificada da resposta aceita . Como a resposta aceita apenas segmenta o item de menu Mídia à esquerda, os usuários ainda podem ver toda a biblioteca de mídia dentro da caixa modal ao carregar uma foto em uma postagem. Esse código ligeiramente modificado corrige essa situação. Os usuários direcionados verão apenas seus próprios itens de mídia na guia Biblioteca de mídia da caixa modal exibida em uma postagem.
Este é o código da resposta aceita com um comentário marcando a linha para editar ...
Para que os usuários visualizem apenas sua própria mídia no menu Mídia E guia Biblioteca de mídia do modal de upload, substitua a linha indicada por esta ...
( quebras de linha e espaçamento inseridos apenas para facilitar a leitura aqui )
O seguinte é o mesmo que acima, mas também os restringe a ver suas próprias postagens no item de menu Postagens.
( quebras de linha e espaçamento inseridos apenas para facilitar a leitura aqui )
Notas : como na resposta aceita, as postagens e os contadores de mídia estarão errados. No entanto, existem soluções para isso em algumas outras respostas nesta página. Não as incorporei simplesmente porque não as havia testado.
fonte
Código de trabalho completo. O único problema é obter uma contagem incorreta de imagens na biblioteca de mídia na página Adicionar postagem.
fonte
media-upload.php
, seu código não está funcionando no modal de upload gerado pela página Pós-edição. Ainda pode ver todos os itens da biblioteca.O t31os tem uma ótima solução lá em cima. A única coisa é que o número de todas as postagens ainda aparece.
Eu descobri uma maneira de impedir que a contagem de números aparecesse usando o jQuery.
Basta adicionar isso ao seu arquivo de função.
Está funcionando para mim!
fonte
Resolvi meu problema com uma solução bastante difícil, mas viável.
1) Instalei o plug-in WP Hide Dashboard, para que o usuário apenas visse um link para o formulário de edição de perfil.
2) No arquivo de modelo author.php, inseri o código que usei acima.
3) Em seguida, para usuários logados, eu exibi um link direto para a página Upload "wp-admin / media-new.php"
4) O próximo problema que notei foi que depois que eles carregavam a foto, eles os redirecionavam para upload.php ... e eles podiam ver todas as outras fotos. Como não encontrei um gancho na página media-new.php, acabei invadindo o núcleo "media-upload.php" e redirecionando-o para a página de perfil:
Em seguida, substituído
wp_redirect( admin_url($location) );
porwp_redirect($userredirect);
Algumas questões, no entanto. Primeiro, o usuário conectado ainda pode ir para "upload.php", se souber que ele existe. Eles não podem fazer nada, exceto OLAR para os arquivos, e 99% das pessoas nem sequer sabem disso, mas ainda não é o ideal. Segundo, ele também redireciona o administrador para a página de perfil após o upload. Eles podem ter uma correção bastante simples, verificando as funções de usuário e redirecionando apenas os Assinantes.
Se alguém tiver idéias sobre como conectar-se à página Mídia sem acessar os arquivos principais, eu agradeceria. Obrigado!
fonte
admin_init
gancho que é executado em todas as solicitações de administrador. Caso um usuário solicite upload.php e você queira impedir que você possa bloquear essa solicitação (por exemplowp_die('Access Denied')
) ou redirecionar para algum local válido por gancho.Salve o código acima como manage_your_media_only.php, feche-o, faça o upload como plug-in no seu WP e ative-o, é tudo.
fonte
Uma maneira de fazer isso é usar o plug-in Role Scoper , que também é ótimo para gerenciar funções e recursos muito específicos. Na verdade, você pode bloquear o acesso às imagens na Biblioteca de mídia apenas para aquelas enviadas por cada usuário. Eu tenho usado para um projeto no qual estou trabalhando no momento e funciona bem.
fonte