Pasta de upload específica para PDFs no tipo Post personalizado no WP multisite

12

Preciso filtrar os envios para uma pasta específica para um tipo de postagem personalizada chamado "documento" apenas para PDFs.

Até agora eu tenho:

function custom_upload_directory( $args ) {
$base_directory = '/home/xxx/my_uploadfolder';
$base_url = 'http://xxxx/wp-content/uploads/my_uploadfolder';

$id = $_REQUEST['post_id'];
$parent = get_post( $id )->post_parent;
// Check the post-type of the current post

if( "document" == get_post_type( $id ) || "document" == get_post_type( $parent ) ) {
    $args['path'] = $base_directory;
    $args['url']  = $base_url;
    $args['basedir'] = $base_directory;
    $args['baseurl'] = $base_url;

}

return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );

Funciona, mas com alguns problemas:: qualquer tipo de arquivo é redirecionado em my_uploadfolder. Além disso, não consigo excluir esses arquivos do WP admin. Alguém pode ajudar?

    
por Gerald 31.01.2013 / 15:22

2 respostas

2

O motivo pelo qual você está tendo problemas aqui é que você está aplicando um filtro universal a upload_dir . Em vez de fazer isso, use um filtro condicional para upload_dir depois de verificar primeiro ['mime-type'] para application/pdf . Você precisa interceptar o processo de upload no gancho wp_handle_upload action e alterar a pasta de upload para lá. O que você postou está indo na direção certa, mas você precisa trabalhar com os dados $_POST de entrada e aplicar o filtro lá pesquisando por upload dos arquivos ['mime-type'] que o WordPress armazena durante o processo de upload.

    
por Brian 29.04.2013 / 16:35
1

você pode considerar usar

if(get_post_mime_type($id) == 'application/pdf'){
   ...
}

para verificar arquivos em pdf.

enlace

Você também pode dar uma olhada no código por trás da função wp_delete_attachment () e pode se conectar a ela com a ação excluir anexo . Para remover os arquivos, você pode usar unlink ()

enlace

    
por birgire 07.02.2013 / 10:26