Je veux que les utilisateurs puissent télécharger des photos en utilisant, add_cap('upload_files')
mais dans leur page de profil, la médiathèque montre chaque image téléchargée. Comment puis-je filtrer cela pour qu'ils ne puissent voir que les images qu'ils ont téléchargées?
Voici ma solution pour le moment… Je fais une requête WP simple, puis une boucle sur la page "Profil" de l'utilisateur
$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);
Réponses:
Vous pouvez toujours filtrer la liste de supports à l'aide d'un
pre_get_posts
filtre qui détermine d'abord la page et les fonctionnalités de l'utilisateur, puis définit le paramètre author lorsque certaines conditions sont remplies.Exemple
J'ai utilisé le capuchon de suppression de pages comme condition pour que les administrateurs et les rédacteurs voient toujours la liste complète des supports.
Il y a un petit effet secondaire, pour lequel je ne vois pas de crochets, et qui correspond au nombre de pièces jointes affiché au-dessus de la liste de médias (qui indiquera toujours le nombre total d'éléments multimédias, et non celui de l'utilisateur donné - i considérez ceci comme un problème mineur cependant).
Je pensais que je le posterais tout de même, pourrait être utile ..;)
la source
A partir de WP 3.7, le
ajax_query_attachments_args
filtre offre un moyen bien meilleur , comme indiqué dans la documentation :la source
Voici une solution complète pour les publications et les médias (ce code est spécifiquement destiné aux auteurs, mais vous pouvez le changer pour n’importe quel rôle d’utilisateur). Cela corrige également le nombre de publications / médias sans pirater les fichiers principaux.
la source
$_num_posts = array();
Ceci est une version modifiée de la réponse acceptée . Étant donné que la réponse acceptée ne cible que l'élément de menu Multimédia situé à gauche, les utilisateurs pouvaient toujours voir l'intégralité de la médiathèque dans la boîte modale lors du téléchargement d'une photo dans un message. Ce code légèrement modifié corrige cette situation. Les utilisateurs ciblés ne verront que leurs propres éléments multimédias à partir de l'onglet Médiathèque de la boîte modale qui apparaît dans une publication.
Ceci est le code de la réponse acceptée avec un commentaire marquant la ligne à modifier ...
Pour que les utilisateurs ne voient que leurs propres médias à partir du menu Médias ET de l'onglet Médiathèque du mode de téléchargement, remplacez la ligne indiquée par ceci ...
( sauts de ligne et espacement insérés ici uniquement pour la lisibilité )
Ce qui suit est le même que ci-dessus mais les empêche également de voir leurs propres publications à partir de l'élément de menu Messages.
( sauts de ligne et espacement insérés ici uniquement pour la lisibilité )
Notes : comme dans la réponse acceptée, les compteurs de messages et de médias seront faux. Cependant, il existe des solutions à cela dans d'autres réponses sur cette page. Je ne les ai pas incorporés simplement parce que je ne les avais pas testés.
la source
Code de travail complet. Le seul problème est d'obtenir un nombre d'images incorrect dans la bibliothèque multimédia sur la page Ajouter une publication.
la source
media-upload.php
, votre code ne fonctionne pas à partir du mode de téléchargement généré par la page Post Edit. Peut toujours voir tous les éléments de la bibliothèque.t31os a une excellente solution là-haut. La seule chose est que le nombre de tous les messages apparaît encore.
J'ai trouvé un moyen d'empêcher le nombre de figurer à l'aide de jQuery.
Ajoutez simplement ceci à votre fichier de fonction.
Cela fonctionne pour moi!
la source
J'ai résolu mon problème avec une solution assez rugueuse, mais réalisable.
1) J'ai installé le plug-in WP Hide Dashboard, afin que l'utilisateur ne voit qu'un lien vers son formulaire de modification de profil.
2) Dans le fichier modèle author.php, j’ai inséré le code que j’ai utilisé ci-dessus.
3) Ensuite, pour les utilisateurs connectés, j'ai affiché un lien direct vers la page de téléchargement "wp-admin / media-new.php"
4) Le numéro suivant que j'ai remarqué était après le téléchargement de la photo, il les redirigeait vers upload.php ... et ils pouvaient voir toutes les autres photos. Je n'ai pas trouvé de lien dans la page media-new.php, alors j'ai fini par pirater le noyau "media-upload.php" et les rediriger vers leur page de profil:
Puis remplacé
wp_redirect( admin_url($location) );
parwp_redirect($userredirect);
Quelques problèmes cependant. Premièrement, l'utilisateur connecté peut toujours aller à "upload.php", s'il sait qu'il existe. Ils ne peuvent rien faire à part regarder les fichiers, et 99% des gens ne le savent même pas, mais ce n'est toujours pas optimal. Deuxièmement, il redirige également l’administrateur vers la page de profil après le téléchargement. Ceux-ci peuvent avoir un correctif assez simple en vérifiant les rôles des utilisateurs et en redirigeant uniquement les abonnés.
Si quelqu'un a des idées sur la connexion à la page Media sans aller dans les fichiers de base, je l'apprécierais. Merci!
la source
admin_init
hook qui s'exécute sur chaque requête de l'administrateur. Dans le cas où un utilisateur demande upload.php et que vous souhaitez empêcher que vous puissiez bloquer cette demande (par exemplewp_die('Access Denied')
) ou rediriger vers un emplacement valide par hook.Enregistrez le code ci-dessus sous le nom manage_your_media_only.php, zippez-le, envoyez-le en tant que plug-in sur votre WP et activez-le, c'est tout.
la source
Une façon de procéder consiste à utiliser le plugin Role Scoper , qui est également très utile pour gérer des rôles et des fonctionnalités très spécifiques. En fait, vous pouvez verrouiller l'accès aux images de la bibliothèque multimédia uniquement aux images téléchargées par chaque utilisateur. Je l'utilise pour un projet sur lequel je travaille en ce moment et cela fonctionne bien.
la source