Carica file a livello di codice in WordPress
Di recente, stavo lavorando a un progetto in cui volevamo caricare le immagini nella cartella personalizzata. Non vogliamo utilizzare la struttura di caricamento predefinita di WordPress in cui tutte le tue immagini vengono archiviate in un formato anno-mese. Invece, volevamo creare la nostra cartella all’interno della directory "uploads" e archiviare le immagini al suo interno. Mi richiede di scrivere un programma in grado di caricare file tramite il modulo HTML.
In questo articolo, studiamo come caricare file a livello di codice in WordPress. Ti mostrerò due modi per eseguire questo compito. Uno è tramite la funzione wp_upload_bits() incorporata e un altro utilizza il metodo move_uploaded_file().
Carica file a livello di codice in WordPress
Per iniziare, crea un semplice modulo HTML con l’input del file e il pulsante di invio. Puoi inserire questo modulo nella tua pagina o nel tuo post.
<h2>Upload a File</h2>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" required />
<input type="submit" name="upload_file" value="Upload" />
</form>
Carica il file usando wp_upload_bits
Usando la wp_upload_bits()
funzione, il tuo file verrà archiviato nella directory dei caricamenti. Troverai il tuo file all’interno della cartella del mese dell’anno corrente (ad es. wp-content/uploads/2020->03->your_file). Questa funzione non sposterà un file sfogliato nella cartella di caricamento. Invece, creerà un nuovo file con il contenuto dei file. L’uso di questo metodo è semplice. Nel tuo functions.php
file, aggiungi il codice come segue.
<?php
function fn_upload_file() {
if (isset($_POST['upload_file'])) {
$upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
// save into database $upload['url]
}
}
add_action('init', 'fn_upload_file');
Se stampi la $upload
variabile, otterrai un array che contiene la directory e il percorso URL del file caricato. L’utente può salvare il percorso dell’URL nel database utilizzando $upload['url]
.
Carica file nella directory personalizzata
Come accennato in precedenza, utilizzando il wp_upload_bits()
metodo i tuoi file verranno archiviati utilizzando la gerarchia di cartelle predefinita di WordPress. Ma cosa succede se si desidera archiviare i file all’interno della propria directory?
In tal caso, devi creare la tua cartella personalizzata nella directory "uploads" e spostare il file in quella cartella. Supponiamo che tu voglia archiviare i tuoi file nella directory "uploads/product-images". Nel codice seguente, creeremo il runtime della cartella "product-images" e memorizzeremo i file al suo interno. Questo codice puoi anche scrivere nel functions.php
file.
function fn_upload_file() {
if (isset($_POST['upload_file'])) {
$upload_dir = wp_upload_dir();
if (! empty( $upload_dir['basedir'])) {
$user_dirname = $upload_dir['basedir'].'/product-images';
if (! file_exists( $user_dirname)) {
wp_mkdir_p( $user_dirname );
}
$filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );
move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
// save into database $upload_dir['baseurl'].'/product-images/'.$filename;
}
}
}
add_action('init', 'fn_upload_file');
Qui, sto usando il metodo wp_unique_filename() che fornisce il nome file univoco per la directory specificata.
Questo è tutto! Si tratta di come caricare file a livello di codice in WordPress. Stai usando qualche altro metodo per un compito simile? Si prega di condividere nella sezione commenti qui sotto.
articoli Correlati
- Come utilizzare il metodo wp_get_image_editor per ridimensionare le immagini in WordPress
- Come registrare le dimensioni delle immagini personalizzate e ridimensionare le immagini esistenti in WordPress
- Come impostare l’immagine in primo piano a livello di codice in WordPress