web-dev-qa-db-ja.com

メディアライブラリのフィルタを無視する

昨日の私の 質問 によると、私は私のWordPressクエリの most からすべての画像を除外する必要があります - 昨日、次の問題に遭遇するまで、私はすべてのクエリからそれらを除外する必要があると思いました。

次のフィルタを使用して画像を除外すると、[メディアの挿入]ダイアログを含めて、メディアライブラリから画像が除外されます。

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

メディアライブラリの画像を見たり、メディアダイアログを挿入したりできるようにしたいです。

メディアライブラリは通常adminセクションにあるので、普通はif (!is_admin())句を入れることができます。

ただし、、フロントエンドにwp_editorがあり、ユーザーがすぐに投稿を追加できるようになっています。そこからメディアライブラリにアクセスすることもできます。

メディアライブラリを照会するときにフィルタが含まれないようにするために使用できるフックまたは条件はありますか?

3
SinisterBeard

Adminグローバル変数 $pagenow と組み合わせて is_admin() を使用することができます。アップロードページにもメディアページにもないことを確認してください。

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