Carica file di WordPress in modo programmatico: 3 modi pratici

Pubblicato: 2022-10-20

Per impostazione predefinita, WordPress supporta il caricamento di file tramite la sua libreria multimediale o la schermata di modifica dei post. Quando carichi file sul tuo sito Web utilizzando queste funzioni integrate, WordPress gestisce tutto per te. Ti permette di visualizzare tutti i file caricati e inserirli nei tuoi post o nelle tue pagine.

Tuttavia, hai bisogno di più quando si tratta di funzionalità personalizzate, come i caricamenti di file frontend. Sono disponibili molti plugin che ti aiutano ad aggiungere, modificare e gestire i tuoi file senza modificare il codice. Naturalmente, la maggior parte di loro richiede una tassa.

Se non vuoi pagare per i plug-in, caricare i file in modo programmatico sul tuo sito WordPress può essere una soluzione. In questo articolo, ti guideremo su come raggiungerlo in dettaglio.

Iniziamo!

  • Un piccolo avviso
  • #1 Carica i file nella libreria multimediale in modo programmatico dagli URL
  • #2 Aggiungi file tramite un modulo HTML
  • #3 Inserisci i file nella Galleria personalizzata in modo programmatico
  • Suggerimento bonus: proteggi i tuoi caricamenti di file

Un piccolo avviso

Questo metodo interferisce principalmente con il codice. Quindi, per favore accetta questa tecnica solo se hai qualche conoscenza di programmazione. In caso contrario, l'intero sito potrebbe crollare con una piccola modifica impropria.

Nel caso in cui hai appena iniziato con WordPress, ti consigliamo vivamente il plug-in Gravity Forms per accettare i caricamenti di file frontend. Oppure, dai un'occhiata ai primi 5 plugin per il caricamento di file frontend di WordPress. Puoi anche utilizzare un client FTP per caricare file dal back-end.

Tuttavia, vuoi imparare come caricare file in modo programmatico in WordPress? Continua a leggere!

#1 Carica i file nella libreria multimediale in modo programmatico dagli URL

Navighi in Internet e trovi fantastiche immagini che desideri caricare nella tua libreria multimediale di WordPress. Ecco il percorso per farlo:

  1. Copia l'URL dell'immagine.
  2. Incorpora il codice qui sotto nel tuo sito e inserisci l'URL che hai copiato:
 /**
* Carica l'immagine dall'URL in modo programmatico
*
* @autore Misha Rudrastyh
* @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
funzione rudr_upload_file_by_url($url_immagine) {

// ci permette di usare le funzioni download_url() e wp_handle_sideload()
require_once(ABSPATH. 'wp-admin/includes/file.php');

// scarica nella directory temporanea

$file_temp = download_url($url_immagine);

if( è_wp_error( $ file_temp ) ) {
restituire falso;
}

// sposta il file temporaneo nella directory dei caricamenti
$file = matrice(
'nome' => basename($image_url),
'tipo' => mime_content_type($file_temp),
'tmp_name' => $file_temp,
'dimensione' => dimensione del file( $ file_temp ),
);
$ sideload = wp_handle_sideload(
$file,
Vettore(
'test_form' => false // non è necessario controllare il parametro 'azione'
)
);

if( ! empty( $sideload[ 'errore' ] ) ) {
// potresti restituire un messaggio di errore se lo desideri
restituire falso;
}

// è ora di aggiungere la nostra immagine caricata nella libreria multimediale di WordPress
$attachment_id = wp_insert_attachment(
Vettore(
'guid' => $sideload[ 'url' ],
'post_mime_type' => $sideload[ 'tipo'],
'post_title' => basename( $sideload[ 'file' ] ),
'post_content' => '',
'post_status' => 'eredita',
),
$sideload[ 'file']
);

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

// aggiorna i metadati, rigenera le dimensioni delle immagini
require_once(ABSPATH. 'wp-admin/includes/image.php');

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

restituisce $attachment_id;
}

Questo è tutto!

#2 Aggiungi file tramite un modulo HTML

Il secondo metodo consiste nel creare un semplice modulo HTML con input di file e pulsante di invio. Puoi inserire questo modulo in qualsiasi pagina o post, che consente agli utenti di caricare file sul tuo sito. Esegui i seguenti passaggi per caricare i file in modo programmatico in WordPress tramite un modulo HTML:

  1. Incorpora il codice seguente per creare un semplice modulo HTML:
 1 <h2>Carica un file</h2>
2 <form method="post" enctype="multipart/form-data">
3 <input type="file" name="file" obbligatorio />
4 <input type="submit" name="upload_file" value="Upload" />
5 </modulo>

Utilizzando la funzione wp_upload_bits() , WordPress memorizzerà automaticamente i file caricati all'interno della directory dei caricamenti . Puoi trovare i tuoi file all'interno della cartella del mese corrente, ad esempio wp-content/uploads/2020->03->your_file .

2. Inserisci questo codice nel tuo file functions.php :

 1 <?php
2 funzione fn_upload_file() {
3 se ( isset($_POST['upload_file']) ) {
4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
5 // salva nel database $upload['url]
6 }
7 }
8 add_action('init', 'fn_upload_file');

Se stampi la variabile $upload , otterrai un array che contiene la directory e gli URL dei file caricati. Gli utenti possono trovare e salvare questi URL nel database utilizzando $upload['url] .

Come accennato in precedenza, una volta utilizzato il metodo wp_upload_bits() , i file verranno archiviati nella gerarchia di cartelle predefinita di WordPress. Ma cosa succede se desideri salvare i file all'interno della tua directory?

In quella situazione, dovresti creare una cartella personalizzata nella directory dei caricamenti e spostarvi i file. Supponiamo che tu voglia archiviare i tuoi file all'interno della directory uploads/product-images . Con il codice sottostante, puoi generare la cartella product-images e archiviare i file al suo interno.

Scrivi il codice nel file functions.php :

 1 funzione fn_upload_file() {
2 se ( isset($_POST['upload_file']) ) {
3 $dir_upload = wp_dir_upload();
4
5 if ( ! empty( $upload_dir['basedir'] ) ) {
6 $user_dirname = $upload_dir['basedir'].'/product-images';
7 se ( ! file_esiste( $nome_utente_dir) ) {
8 wp_mkdir_p($nome_dir_utente);
9 }
10
11 $nomefile = wp_unique_nomefile($nome_dir_utente, $_FILES['file']['nome']);
12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
13 // salva nel database $upload_dir['baseurl'].'/product-images/'.$filename;
14 }
15}
16 }
17 add_action('init', 'fn_upload_file');

Qui, stiamo applicando la tecnica wp_unique_filename() per dare un nome file univoco alla directory data.

#3 Inserisci i file nella Galleria personalizzata in modo programmatico

Supponiamo di avere una galleria aggiunta come meta campo personalizzato chiamato "galleria". Carichi molte immagini tramite media_sideload_image() . Quindi, serializza i loro ID e inseriscili nella galleria tramite update_post_meta($post_id, 'gallery', $serialized) ;

Di conseguenza, quando guardi il post nella pagina Modifica post di backend, vedrai tutte le foto caricate. Tuttavia, queste immagini non verranno visualizzate in una presentazione nel front-end fino a quando non premi Aggiorna nel back-end.

Quindi, come puoi fare clic a livello di codice sul pulsante Aggiorna dopo aver creato la galleria? Segui semplicemente la guida qui sotto:

  1. Dopo aver aggiornato la galleria dei post, aggiungi questo codice per selezionare a livello di codice il pulsante Aggiorna :
 wp_update_post(['ID'=>$post_id]);

2. Aggiorna la cache per utilizzare le funzioni di ricerca e filtro:

 do_action('search_filter_update_post_cache', $post_id);

Suggerimento bonus: proteggi i tuoi caricamenti di file

Esistono modi per impedire l'accesso non autorizzato ai file caricati? La risposta è si. Per ulteriori informazioni, fare riferimento alla nostra guida dettagliata su 21 utili trucchi .htaccess per proteggere i file WordPress. Poiché .htaccess è un file critico che mantiene il tuo sito in esecuzione senza intoppi, fai attenzione quando apporti modifiche.

D'altra parte, installa il plug-in PDA Gold se non sei sicuro delle tue capacità di programmazione. Ti aiuterà a gestire la seccatura senza preoccuparti di influenzare il file .htaccess.

Un altro metodo da tenere in considerazione è proteggere con password i tuoi file WordPress. Dai un'occhiata al nostro articolo per maggiori dettagli.

Carica i file in modo programmatico in WordPress come un esperto!

Ti abbiamo mostrato 3 modi per caricare file in modo programmatico in WordPress. Ora puoi caricare facilmente file nella libreria multimediale o tramite un modulo di caricamento file frontend HTML. È anche possibile aggiungere file alla tua galleria personalizzata. E, soprattutto, non dimenticare di proteggere i tuoi file WordPress utilizzando il codice o installando plug-in.

Si tratta di come caricare file in modo programmatico in WordPress. Conosci altri metodi? Si prega di condividere con noi nella sezione commenti qui sotto.