web-dev-qa-db-fra.com

Médiathèque séparée pour chaque utilisateur

Je crée un thème pour un client et l'une de leurs demandes consiste à autoriser les utilisateurs à télécharger des images pour leur propre usage, mais il peut exister une option de partage des images.

Voici quelques mises en garde:

  • Chaque utilisateur a la possibilité de télécharger ses propres images dans sa propre médiathèque.
  • Ces images doivent pouvoir être "taguées" exactement de la même manière que nous "taguons" maintenant.
  • L'administrateur peut également gérer ces images.

Premièrement, est-ce possible et est-il possible de créer une taxonomie "tag" pour les images?

Merci de votre aide.

6
Anthony

Caractéristiques intégrées

La médiathèque contient des mises à jour majeures de la version à venir. Vous pouvez voir les modifications apportées aux diapositives de Daryl Koopersmith ici . Vous pouvez lisez l'annonce et la discussion sur "Make" .

Votre demande de "tags/catégories" est déjà intégrée à la version 3.5.

Remarque

La différence entre les thèmes et les plugins est assez simple: affichage ou fonctionnalité. Je suggère donc de ne pas intégrer de telles fonctionnalités dans un thème, mais de les séparer en tant que plugin. Votre avantage à faire cela: vous/votre client ne perdriez pas cette fonctionnalité lors d'une mise à jour ou d'un changement de thème Cela vous simplifie simplement la vie. Imaginez que vous ayez un autre client qui demande cela. Ensuite, il vous suffirait de télécharger votre plug-in existant au lieu de l'extraire de votre thème et de le déplacer dans le prochain thème.

3
kaiser

Comme Kaiser l'a mentionné, dans la prochaine version de WordPress, la médiathèque utilise une interface utilisateur plus proche de l'interface posts/pages.

Étant donné que la médiathèque est essentiellement un CPT appelé "pièce jointe", vous pouvez commenter, publier des méta et affecter des taxonomies au type de publication "pièce jointe".

3.4.2 supporte tout cela, mais ne montrera pas l'interface utilisateur des taxonomies pour les types de média. 3,5 fait.

Donc, le marquage est fait.

Pour tout montrer aux administrateurs et donner aux utilisateurs individuels leurs propres médiathèques? Vous devrez les filtrer en fonction de l'auteur, en utilisant un filtre pre_get_posts qui ne s'exécute que dans le backend, et si l'utilisateur n'est pas administrateur du rôle ou supérieur, et uniquement si la requête recherche des publications de type 'pièce jointe. '.

3
Tom J Nowell

Ce Q & A montre comment limiter les publications qu'un rôle d'utilisateur peut voir dans le tableau de bord. Il manquait la pièce jointe, qui est la suivante:

add_filter( 'pre_get_posts', 'wpse_72278_current_author_media' );
add_filter( 'views_upload', 'wpse_72278_custom_view_count', 10, 1 );

function wpse_72278_current_author_media( $query ) 
{
    global $pagenow, $user_ID;

    if( 'upload.php' !== $pagenow )
        return $query;

    if ( $query->is_admin && current_user_can( 'editor' ) ) 
        $query->set( 'author', $user_ID );      

    return $query;
}

function wpse_72278_custom_view_count( $views ) 
{
    global $user_ID, $wpdb;

    if ( !current_user_can('editor') ) 
        return $views;

    $total = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID'
        AND post_type = 'attachment' " );
    $image = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_mime_type LIKE 'image/%' " );
    $video = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_mime_type LIKE 'video/%' " );
    $detached = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts 
        WHERE post_author = '$user_ID' 
        AND post_type = 'attachment' AND post_parent = '0' " );

    $views['all'] = preg_replace( '/\(.+\)/U', '('.$total.')', $views['all'] ); 
    $views['image'] = preg_replace( '/\(.+\)/U', '('.$image.')', $views['image'] ); 
    $views['video'] = preg_replace( '/\(.+\)/U', '('.$video.')', $views['video'] ); 
    $views['detached'] = preg_replace( '/\(.+\)/U', '('.$detached.')', $views['detached'] ); 

    return $views;
}

Cet autre s'occupe de la publication d'un article appartenant à un auteur et du téléchargement effectué par un autre.

Et si vous ne sautez pas encore dans la version 3.5, ce dernier gère les champs personnalisés pour les pièces jointes.

3
brasofilo