Adicionar um campo de upload de arquivo

Eu estou construindo um plugin que possui um campo de upload de arquivos na sua página de configurações. Os arquivos não devem ser arquivos de imagem, mas devem ser .doc, .txt etc. Lutando com o código para ele. Qualquer ajuda seria muito apreciada !

Editar 1: Aqui está o código –

$options = get_option('nn_sub_general_options'); if(!isset($options['nn_file_uploader'])) $options['nn_file_uploader'] = ''; require_once( ABSPATH . 'wp-admin/includes/file.php' ); echo "
"; $uploadedfile = $_FILES['nn_sub_general_options[nn_file_uploader]']; $upload_overrides = array( 'test_form' => false ); $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );

Parece haver algum problema com a terceira última linha do código, pois me dá um erro de índice indefinido lá

Solutions Collecting From Web of "Adicionar um campo de upload de arquivo"

Primeiro, faça um var_dump na variável $_FILES para verificar se a chave da matriz que você está usando é a correta, e você nunca deve apenas pegar uma variável que vem da input do usuário e apenas usá-la, tentar fazer um isset ou empty antes de usar a variável.

Depois de descobrir qual é a chave, você usará wp_check_filetype porque dará dados mais seguros sobre o arquivo, você terá que fazer 2 in_array para verificar se o mimetype do arquivo e a extensão pertencem ao conjunto que você está permitindo ao usuário carregar, se não jogar o usuário uma mensagem. Exemplo de in_array :

 $extention = 'doc'; $allowed_extensions = array( 'doc', 'docx', 'pdf' ); $mime = 'text/javascript'; $allowed_mime = array( 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-word.document.macroEnabled.12' ); if ( ! in_array( $extension, $allowed_extensions ) ){ return false; } if ( ! in_array( $mime, $allowed_mime ) ){ return false; } 

Se você quiser verificar o tamanho do arquivo, você pode usar check_upload_size , que também é um método WordPress que usa o limite de upload do site como um guia.

 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ( ( ( $_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png") ) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts) ) { } 

Você pode usar esta condição para o seu tipo de arquivo