web-dev-qa-db-fra.com

Ignorer un filtre sur la médiathèque

Selon ma question hier , je dois exclure toutes les images de la plupart de mes requêtes WordPress - hier, je pensais que je devais les exclure de toutes les requêtes, jusqu'à ce que je tombe sur le problème suivant.

L'exclusion d'images à l'aide du filtre suivant les exclut également de la bibliothèque multimédia, y compris la boîte de dialogue Insérer un média.

function remove_images($where) {
    global $wpdb;
    $where.=' AND '.$wpdb->posts.'.post_mime_type NOT LIKE \'image/%\'';
    return $where;
}

Je veux toujours pouvoir voir les images dans ma médiathèque et insérer un dialogue multimédia.

Normalement, je pourrais simplement insérer une clause if (!is_admin()), car la médiathèque est généralement visible dans la section admin.

Cependant , j’ai aussi un wp_editor au début de la session pour permettre à mes utilisateurs d’ajouter rapidement des publications - et vous pouvez également accéder à la médiathèque à partir de là.

Existe-t-il un crochet ou une condition que je peux utiliser pour que le filtre ne soit pas inclus lors de l'interrogation de la médiathèque?

3
SinisterBeard

Vous pouvez utiliser is_admin() en conjonction avec la variable globale admin $pagenow pour créer Assurez-vous que vous n'êtes ni sur la page de téléchargement ni sur la page multimédia:

function remove_images( $where ) {
    global $wpdb,
        $pagenow;

    if( is_admin() && in_array( $pagenow, array( 'upload.php', 'media-upload.php' ) ) {
        return $where
    }

    $where  .=  " AND {$wpdb->posts}.post_mime_type NOT LIKE 'image/%'";
    return $where;
}
3
Howdy_McGee