web-dev-qa-db-fra.com

Limiter la médiathèque au dossier donné

J'ai créé un plugin qui utilise la médiathèque pour permettre aux utilisateurs de télécharger des fichiers dans un répertoire spécifique - en utilisant le filtre upload_dir.

Je voudrais savoir s’il existe un moyen (c’est-à-dire un filtre) de limiter la bibliothèque multimédia à l’affichage des fichiers contenus dans mon dossier personnalisé.

Si possible, je veux que l'utilisateur puisse choisir uniquement les fichiers qui ont été téléchargés dans le dossier personnalisé lors de l'interaction avec la médiathèque instanciée par mon plugin.

5
Michael Robinson

Une solution qui fonctionne pour moi consiste à ajouter une clause à la requête Wordpress lorsque la médiathèque est affichée.

En parcourant ma base de données Wordpress, j'ai remarqué que le chemin d'accès complet à wp_posts.post_type = 'attachment' est stocké dans la colonne wp_posts.guid.

add_filter('posts_where', 'limitMediaLibraryItems_56456', 10, 2 );
function limitMediaLibraryItems_56456($where, &$wp_query) {
    global $pagenow, $wpdb;

    // Do not modify $where for non-media library requests
    if ($pagenow !== 'media-upload.php') {
        return $where;
    }

    $where .= " AND {$wpdb->posts}.guid LIKE '%my-path-segment%'";

    return $where;
}
2
Michael Robinson