Je veux lister les images pour l'image téléchargée uniquement par l'utilisateur. Voici le scénario:
upload_files
cap aux utilisateurs du niveau abonné et je veux qu'ils ne voient que les images qu'ils ont téléchargées.J'ai trouvé ceci Q Restreindre les utilisateurs à afficher uniquement les éléments de la bibliothèque multimédia qu'ils ont téléchargés? mais la réponse acceptée ne fonctionne pas pour moi.
// Code originally by @t31os
add_action('pre_get_posts','users_own_attachments');
function users_own_attachments( $wp_query_obj )
{
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( 'upload.php' != $pagenow )
return;
if( !current_user_can('delete_pages') )
$wp_query_obj->set('author', $current_user->id );
return;
}
La page que je suis en train d'utiliser le programme de téléchargement d'images s'appelle "Entrée".
if( 'upload.php' != $pagenow ) return;
, le code fonctionne. Je pense que je dois améliorer cette partie du code conditionnel mais je ne pouvais pas le comprendre. La condition est importante car je ne veux pas que le code s’applique à d’autres pages où il n’est pas requis.J'ai donc besoin d'aide pour améliorer la partie conditionnelle, comme je l'ai mentionné. Merci!
Le formulaire de téléchargement de média que j’étais en train d’arriver via thickbox était media-upload.php
. Donc, je devais changer le conditionnel à if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)
. J'ai oublié de regarder dans l'endroit évident :)
// Code originally by @t31os
add_action('pre_get_posts','users_own_attachments');
function users_own_attachments( $wp_query_obj )
{
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)
return;
if( !current_user_can('delete_pages') )
$wp_query_obj->set('author', $current_user->id );
return;
}
Cela fonctionne pour moi afin de répertorier les éléments téléchargés par un utilisateur sur la médiathèque.
function users_my_media_only( $wp_query ) {
if ( false !== strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) ) {
$current_user = wp_get_current_user();
$current_user = $current_user->ID;
if ( ! current_user_can( 'manage_options' ) ) {
global $current_user;
$wp_query->set( 'author', $current_user->id );
}
}
}
add_filter('parse_query', 'users_my_media_only' );
Cela permettra à tous les utilisateurs dotés de la capacité manage_options
(généralement admin) de voir toutes les images, les autres utilisateurs ne verront que leurs propres images. Notez que quelques améliorations peuvent être apportées comme $pagenow
et current_user_can
. Pas une beauté mais ça fait le boulot