Uma das formas que conheço para bloquear o download de arquivos, diretamente, é redirecionar o acesso a estes arquivos, através do .htaccess, para um arquivo .php e neste PHP você verifica se o usuário está logado e caso sim imprimi o arquivo com o cabeçalho correto e o download vai iniciar, se não estiver logado você redireciona para uma página de acesso negado, por exemplo.
Agora seguinte, se você for fazer isso sugiro que utilize um outro diretório ou defina as extensões de arquivos que devem ser redirecionadas para evitar que as imagens dos posts deixem de aparecer para usuários não logados.
Redirecionando o acesso a arquivos .pdf, via .htaccess, para o arquivo controle-download.php
RewriteEngine On
RewriteRule ^(.+)\.pdf$ controle-download.php
Ai no controle-downlaod.php
você vai verificar se o usuário está logado, se ele estiver:
// abri o arquivo com permissão de leitura
$fp = fopen( $arquivo, 'r' );
// armazena o conteúdo dele em uma variavel
$buffer = fread( $fp, filesize( $arquivo ) );
// fecha o arquivo
fclose( $fp );
// envia o cabeçalho de acordo com o tipo do arquivo
header( 'Content-type: application/pdf' );
// libera o arquivo no navegador
print $buffer;
Perceba que estou abstraindo boa parte do código, só escrevi o suficiente para exemplificar uma forma de fazer, então copiar e colar o código exatamente como está ai em cima não é a solução completa, você precisa ajudar para sua necessidade, checar se o usuário está logado, definir as extensões e etc…