{"id":27516,"date":"2021-05-18T16:48:00","date_gmt":"2021-05-18T13:48:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27516"},"modified":"2021-10-18T04:11:22","modified_gmt":"2021-10-18T01:11:22","slug":"faca-upload-de-arquivos-programaticamente-no-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/faca-upload-de-arquivos-programaticamente-no-wordpress\/","title":{"rendered":"Fa\u00e7a upload de arquivos programaticamente no WordPress"},"content":{"rendered":"<p>Recentemente, eu estava trabalhando em um projeto em que quer\u00edamos fazer upload de imagens na pasta personalizada. N\u00e3o queremos usar a estrutura de uploads padr\u00e3o do WordPress, onde todas as suas imagens s\u00e3o armazenadas no formato ano-m\u00eas. Em vez disso, quer\u00edamos criar nossa pr\u00f3pria pasta dentro do diret\u00f3rio de &#8216;uploads&#8217; e armazenar imagens nela. Requer que eu escreva um programa que possa carregar arquivos por meio do formul\u00e1rio HTML.<\/p>\n<p>Neste artigo, estudamos como fazer upload de arquivos programaticamente no WordPress. Vou lhe mostrar duas maneiras de realizar essa tarefa. Um \u00e9 atrav\u00e9s da fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_upload_bits\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_upload_bits()<\/a> embutida e outro est\u00e1 usando o m\u00e9todo <a href=\"https:\/\/www.php.net\/manual\/en\/function.move-uploaded-file.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">move_uploaded_file ()<\/a>.<\/p>\n<h3>Fa\u00e7a upload de arquivos programaticamente no WordPress<\/h3>\n<p>Para come\u00e7ar, crie um formul\u00e1rio HTML simples com entrada de arquivo e bot\u00e3o de envio. Voc\u00ea pode colocar este formul\u00e1rio em sua p\u00e1gina ou postagem.<\/p>\n<pre><code>&lt;h2&gt;Upload a File&lt;\/h2&gt;\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"file\" required \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"upload_file\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h4>Carregar arquivo usando wp_upload_bits<\/h4>\n<p>Usando a <code>wp_upload_bits()<\/code>fun\u00e7\u00e3o, seu arquivo ser\u00e1 armazenado dentro do diret\u00f3rio de uploads. Voc\u00ea encontrar\u00e1 seu arquivo dentro da pasta do m\u00eas do ano atual (por exemplo, wp-content \/ uploads \/ 2020-&gt; 03-&gt; seu_arquivo). Esta fun\u00e7\u00e3o n\u00e3o mover\u00e1 um arquivo navegado para a pasta de upload. Em vez disso, ele criar\u00e1 um novo arquivo com o conte\u00fado dos arquivos. O uso deste m\u00e9todo \u00e9 simples. Em seu <code>functions.php<\/code>arquivo, adicione o c\u00f3digo da seguinte maneira.<\/p>\n<pre><code>&lt;?php\nfunction fn_upload_file() {\n\u00a0\u00a0\u00a0\u00a0if (isset($_POST['upload_file'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ save into database $upload['url]\n\u00a0\u00a0\u00a0\u00a0}\n}\nadd_action('init', 'fn_upload_file');<\/code><\/pre>\n<p>Se voc\u00ea imprimir a <code>$upload<\/code>vari\u00e1vel, obter\u00e1 um array que cont\u00e9m o diret\u00f3rio e o caminho da URL do arquivo carregado. O usu\u00e1rio pode salvar o caminho da URL no banco de dados usando <code>$upload['url]<\/code>.<\/p>\n<h4>Carregar arquivo no diret\u00f3rio personalizado<\/h4>\n<p>Conforme mencionado acima, usando o <code>wp_upload_bits()<\/code>m\u00e9todo, seus arquivos ser\u00e3o armazenados usando a hierarquia de pastas padr\u00e3o do WordPress. Mas e se voc\u00ea quiser armazenar arquivos em seu pr\u00f3prio diret\u00f3rio?<\/p>\n<p>Nesse caso, voc\u00ea precisa criar sua pasta personalizada no diret\u00f3rio &#8216;uploads&#8217; e mover seu arquivo para essa pasta. Digamos que voc\u00ea queira armazenar seus arquivos dentro do diret\u00f3rio &#8216;uploads \/ product-images&#8217;. No c\u00f3digo a seguir, criaremos o tempo de execu\u00e7\u00e3o da pasta &#8216;product-images&#8217; e armazenaremos os arquivos dentro dela. Este c\u00f3digo tamb\u00e9m pode ser escrito no <code>functions.php<\/code>arquivo.<\/p>\n<pre><code>function fn_upload_file() {\n\u00a0\u00a0\u00a0\u00a0if (isset($_POST['upload_file'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload_dir = wp_upload_dir();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! empty( $upload_dir['basedir'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user_dirname = $upload_dir['basedir'].'\/product-images';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! file_exists( $user_dirname)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_mkdir_p( $user_dirname );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'\/'. $filename);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ save into database $upload_dir['baseurl'].'\/product-images\/'.$filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\nadd_action('init', 'fn_upload_file');<\/code><\/pre>\n<p>Aqui, estou usando o m\u00e9todo <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_unique_filename\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_unique_filename ()<\/a> que fornece o nome de arquivo exclusivo para o diret\u00f3rio fornecido.<\/p>\n<p>\u00c9 isso! \u00c9 tudo sobre como fazer upload de arquivos programaticamente no WordPress. Voc\u00ea est\u00e1 usando algum outro m\u00e9todo para uma tarefa semelhante? Por favor, compartilhe na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-usar-o-metodo-wp_get_image_editor-para-redimensionar-suas-imagens-no-wordpress\/\" title=\"Como usar o m\u00e9todo wp_get_image_editor para redimensionar suas imagens no WordPress\">Como usar o m\u00e9todo wp_get_image_editor para redimensionar suas imagens no WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-registrar-tamanhos-de-imagem-personalizados-e-redimensionar-imagens-existentes-no-wordpress\/\" title=\"Como registrar tamanhos de imagem personalizados e redimensionar imagens existentes no WordPress\">Como registrar tamanhos de imagem personalizados e redimensionar imagens existentes no WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-definir-imagens-em-destaque-programaticamente-no-wordpress\/\" title=\"Como definir imagens em destaque programaticamente no WordPress\">Como definir imagens em destaque programaticamente no WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como lidar com a tarefa de upload de arquivo WordPress? Neste artigo, explicamos como fazer upload de arquivos programaticamente no WordPress. Eu vou te mostrar como mover arquivos<\/p>\n","protected":false},"author":1,"featured_media":21646,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[417,613],"tags":[848],"class_list":["post-27516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diversos","category-uncategorized-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27516"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21646"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}