Este tipo de arquivo não é permitido. Por favor, tente outro

Meu wp-config.php já possui

define('ALLOW_UNFILTERED_UPLOADS', true); 

Mas quando eu envio um arquivo .nb, ele mostra “Este tipo de arquivo não é permitido. Por favor, tente outro”

Como faço para permitir o upload de qualquer tipo de arquivos? Minha versão WP é 4.7.3.

Solutions Collecting From Web of "Este tipo de arquivo não é permitido. Por favor, tente outro"

Resposta Original

Adicione o código abaixo às functions.php do seu tema functions.php :

 function wpse_add_nb_mime_type( $allowed_mimes ) { $allowed_mimes['nb'] = 'application/mathematica'; return $allowed_mimes; } add_filter( 'mime_types', 'wpse_add_nb_mime_type', 10, 1 ); 

Remova define , mencionado em sua pergunta, de wp-config.php . Agora, você pode carregar arquivos .nb .

Alternativa de complemento : para fazer o código acima, imune às mudanças de tema, é melhor colocá-lo em um plugin. Crie um novo arquivo wpse-addnbmimetype.php , com este conteúdo:

 < ?php /* Plugin Name: WPSE Add NB Mime Type Description: Adds 'nb' => 'application/mathematica' to allowable mime types */ function wpse_add_nb_mime_type( $allowed_mimes ) { $allowed_mimes['nb'] = 'application/mathematica'; return $allowed_mimes; } function wpse_prepare_add_nb_mime_type() { // this filter can be added as early as in init action add_filter( 'mime_types', 'wpse_add_nb_mime_type', 10, 1 ); } add_action( 'init', 'wpse_prepare_add_nb_mime_type' ); 

Coloque este arquivo na pasta ‘/ wp-content / mu-plugins /’. Agora você pode alternar temas, sem perder a capacidade de carregar arquivos .nb.

Análise

Leia comentários para a resposta da @majick, primeiro. Após todas as correções, seu filtro ficará assim:

 add_filter('upload_mimes', 'modify_upload_mimes', 10, 2); function modify_upload_mimes($t, $user) { if ($user == null) {$user = wp_get_current_user();} if (in_array('administrator', $user->roles)) { $t['nb'] = 'application/mathematica'; } return $t; } 

Funciona? Sim, mas restringe os carregamentos de arquivos com extensões .nb apenas para o papel de “administrador”. Autores e editores não poderão carregar esses arquivos. Vamos mudá-lo, substituindo a linha:

 if (in_array('administrator', $user->roles)) { 

com:

 if ( $user->has_cap( 'upload_files' ) ) { 

Agora, autores, editores e administradores podem carregar arquivos .nb.

As verificações contra o papel do usuário devem ser desencorajadas, e devem ser feitas contra os resources do usuário, em vez disso. Se um dia, nós decidimos adicionar o recurso ‘upload_files’ ao papel do colaborador (todos os contribuintes), ou para o usuário individual, nosso filtro funcionará, sem alterações.

Por que temos dois ganchos, ‘mime_types’ e ‘upload_mimes’, para escolher? Recomenda-se usar ‘mime_types’ para adicionar tipos de mime e ‘upload_mimes’ para remover (para desarmá-los).

Existem duas funções em ‘/wp-includes/functions.php’: primeiro – get_allowed_mime_types( $user = null ) , apresentando o gancho de filtro ‘upload_mimes’, que foi destinado a remoção arbitrária de ‘swf’, ‘exe’ e condicional remoção de ‘htm | html’, tipos de mime e segundo – wp_get_mime_types() , introduzindo o gancho de filtro ‘mime_types’, destinado a adicionar tipos de mime.

Conclusão

Tecnicamente, poderíamos usar qualquer gancho para nossa solução, mas de acordo com as recomendações, ‘mime_types’ deveria ser usado. Não são necessárias verificações para os resources do usuário, pois ambos os ganchos serão ativados somente para usuários com capacidade de ‘upload_files’.

Você pode depurar isso fazendo o seguinte:

 apply_filters('user_has_cap', 'check_user_caps', 10, 4); function check_user_caps($allcaps, $caps, $args, $user) { if (in_array('administrator', $user->roles)) { echo ""; } return $allcaps; } 

Em seguida, verifique a fonte da sua página e procure o recurso “unfiltered_upload”. Deve estar lá, se não algo der errado …

A outra maneira de fazer isso é usar o filtro upload_mimes . Este é provavelmente um melhor caminho a seguir, uma vez que você pode adicionar apenas a (s) extensão (s) que você precisa e, portanto, é uma maneira muito mais segura de seguir. por exemplo:

 add_filter('upload_mimes', 'modify_upload_mimes', 10, 2); function modify_upload_mimes($t, $user) { if ($user == null) {$user = wp_get_current_user();} if (in_array('administrator', $user->roles)) { $t['nb'] = 'application/mathematica'; } return $t; } 

veja a function get_allowed_mime_types em wp-includes/functions.php