Carregar arquivo do WordPress programaticamente: 3 maneiras práticas

Publicados: 2022-10-20

Por padrão, o WordPress suporta o upload de arquivos por meio de sua biblioteca de mídia ou tela de pós-edição. Quando você faz upload de arquivos para o seu site usando essas funções integradas, o WordPress cuida de tudo para você. Ele permite que você visualize todos os arquivos enviados e insira-os em suas postagens ou páginas.

No entanto, você precisa de mais do que isso quando se trata de funcionalidades personalizadas, como uploads de arquivos front-end. Existem muitos plugins disponíveis que ajudam você a adicionar, modificar e gerenciar seus arquivos sem ajustar o código. Claro, a maioria deles exige uma taxa.

Se você não quiser pagar por plugins, fazer upload de arquivos programaticamente para o seu site WordPress pode ser uma solução. Neste artigo, vamos orientá-lo sobre como conseguir isso em detalhes.

Vamos começar!

  • Um pequeno aviso
  • #1 Carregar arquivos para a biblioteca de mídia programaticamente a partir de URLs
  • #2 Adicionar arquivos por meio de um formulário HTML
  • #3 Inserir arquivos na galeria personalizada programaticamente
  • Dica de bônus: proteja seus uploads de arquivos

Um pequeno aviso

Esse método interfere principalmente no código. Portanto, opte por esta técnica apenas se tiver algum conhecimento de codificação. Caso contrário, todo o seu site pode entrar em colapso com apenas uma pequena alteração imprópria.

Caso você tenha acabado de começar com o WordPress, recomendamos o plugin Gravity Forms para aceitar uploads de arquivos front-end. Ou confira os 5 principais plugins para uploads de arquivos front-end do WordPress. Você também pode usar um cliente FTP para fazer upload de arquivos do back-end.

Ainda assim, quer aprender a fazer upload de arquivos programaticamente no WordPress? Continue lendo!

#1 Carregar arquivos para a biblioteca de mídia programaticamente a partir de URLs

Você navega na Internet e encontra ótimas imagens que deseja enviar para sua biblioteca de mídia do WordPress. Aqui está o caminho para fazê-lo:

  1. Copie o URL da imagem.
  2. Incorpore o código abaixo ao seu site e insira o URL que você copiou:
 /**
* Carregar imagem do URL programaticamente
*
* @autor Misha Rudrastyh
* @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
function rudr_upload_file_by_url( $ imagem_url ) {

// permite usar as funções download_url() e wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// baixa para o diretório temporário

$temp_file = download_url( $image_url);

if( is_wp_error($temp_file)) {
retorna falso;
}

// move o arquivo temporário para o diretório de uploads
$arquivo = array(
'nome' => basename( $imagem_url),
'type' => mime_content_type( $temp_file ),
'tmp_name' => $temp_file,
'tamanho' => tamanho do arquivo( $temp_file ),
);
$sideload = wp_handle_sideload(
$arquivo,
variedade(
'test_form' => false // não é necessário verificar o parâmetro 'action'
)
);

if( ! empty( $sideload[ 'error' ] ) ) {
// você pode retornar uma mensagem de erro se quiser
retorna falso;
}

// é hora de adicionar nossa imagem carregada na biblioteca de mídia do WordPress
$attachment_id = wp_insert_attachment(
variedade(
'guid' => $sideload['url'],
'post_mime_type' => $sideload[ 'type' ],
'post_title' => basename( $sideload[ 'arquivo' ] ),
'post_content' => '',
'post_status' => 'herdar',
),
$sideload['arquivo']
);

if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
retorna falso;
}

// atualiza metadados, regenera tamanhos de imagem
require_once( ABSPATH . 'wp-admin/includes/image.php' );

wp_update_attachment_metadata(
$attachment_id,
wp_generate_attachment_metadata( $attachment_id, $sideload[ 'arquivo' ] )
);

return $attachment_id;
}

É isso!

#2 Adicionar arquivos por meio de um formulário HTML

O segundo método é criar um formulário HTML simples com entrada de arquivo e botão de envio. Você pode colocar este formulário em qualquer página ou post, o que permite aos usuários fazer upload de arquivos para o seu site. Siga as etapas a seguir para fazer upload de arquivos programaticamente no WordPress por meio de um formulário HTML:

  1. Incorpore o seguinte código para criar um formulário HTML simples:
 1 <h2>Carregar um arquivo</h2>
2 <form method="post" enctype="multipart/form-data">
3 <input type="file" name="file" obrigatório />
4 <input type="submit" name="upload_file" value="Upload" />
5 </form>

Ao usar a função wp_upload_bits() , o WordPress armazenará automaticamente seus arquivos enviados dentro do diretório de uploads . Você pode encontrar seus arquivos dentro da pasta ano-mês atual, por exemplo, wp-content/uploads/2020->03->your_file .

2. Insira este código em seu arquivo functions.php :

 1 <?php
2 function fn_upload_file() {
3 if ( isset($_POST['upload_file']) ) {
4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
5 // salva no banco de dados $upload['url]
6}
7}
8 add_action('init', 'fn_upload_file');

Se você imprimir a variável $upload , obterá um array que contém o diretório e os URLs dos arquivos carregados. Os usuários podem encontrar e salvar esses URLs no banco de dados usando $upload['url] .

Como mencionado acima, uma vez usando o método wp_upload_bits() , seus arquivos serão armazenados na hierarquia de pastas padrão do WordPress. Mas e se você quiser salvar arquivos dentro de seu próprio diretório?

Nessa situação, você deve criar uma pasta personalizada no diretório de uploads e mover os arquivos para ela. Digamos que você queira armazenar seus arquivos dentro do diretório uploads/product-images . Com o código abaixo, você pode gerar a pasta product-images e armazenar arquivos dentro dela.

Escreva o código no arquivo functions.php :

 1 function fn_upload_file() {
2 if ( isset($_POST['upload_file']) ) {
3 $upload_dir = wp_upload_dir();
4
5 if ( ! empty( $upload_dir['basedir'] ) ) {
6 $user_dirname = $upload_dir['basedir'].'/product-images';
7 if (! file_exists( $user_dirname)) {
8 wp_mkdir_p( $user_dirname );
9}
10
11 $filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );
12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
13 // salva no banco de dados $upload_dir['baseurl'].'/product-images/'.$filename;
14}
15}
16}
17 add_action('init', 'fn_upload_file');

Aqui, estamos aplicando a técnica wp_unique_filename() para fornecer um nome de arquivo exclusivo para o diretório fornecido.

#3 Inserir arquivos na galeria personalizada programaticamente

Vamos supor que você tenha uma galeria adicionada como um metacampo personalizado chamado “galeria”. Você carrega muitas imagens por meio de media_sideload_image() . Em seguida, serialize seus IDs e insira-os na galeria por update_post_meta( $post_id , 'gallery', $serialized) ;

Consequentemente, quando você olhar para a postagem na página Editar postagem de back-end, verá todas as fotos carregadas. No entanto, essas imagens não serão exibidas em uma apresentação de slides no frontend até que você pressione Atualizar no backend.

Então, como você pode clicar programaticamente no botão Atualizar depois de criar a galeria? Basta seguir o guia abaixo:

  1. Depois de atualizar a galeria de postagens, adicione este código para selecionar programaticamente o botão Atualizar :
 wp_update_post(['ID'=>$post_id]);

2. Atualize o cache para usar as funções de pesquisa e filtro:

 do_action('search_filter_update_post_cache', $post_id);

Dica de bônus: proteja seus uploads de arquivos

Existem maneiras de impedir o acesso não autorizado aos seus arquivos enviados? A resposta é sim. Para obter mais informações, consulte nosso guia detalhado sobre 21 truques úteis de .htaccess para proteger arquivos do WordPress. Como .htaccess é um arquivo crítico que mantém seu site funcionando sem problemas, tenha cuidado ao fazer qualquer alteração.

Por outro lado, instale o plug-in PDA Gold se você não estiver confiante em suas habilidades de codificação. Ele irá ajudá-lo a lidar com o incômodo sem se preocupar em afetar o arquivo .htaccess.

Outro método que vale a pena considerar é proteger com senha seus arquivos do WordPress. Confira nosso artigo para mais detalhes.

Carregue arquivos programaticamente no WordPress como um especialista!

Mostramos 3 maneiras de fazer upload de arquivos programaticamente no WordPress. Agora, você pode fazer upload de arquivos sem esforço para a biblioteca de mídia ou por meio de um formulário de upload de arquivo de front-end HTML. Também é possível adicionar arquivos à sua galeria personalizada. E o mais importante, não se esqueça de proteger seus arquivos do WordPress usando código ou instalando plugins.

É tudo sobre como fazer upload de arquivos programaticamente no WordPress. Você conhece algum outro método? Por favor, compartilhe conosco na seção de comentários abaixo.