Ladda upp filer programmatiskt i WordPress
Nyligen arbetade jag med ett projekt där vi ville ladda upp bilder i den anpassade mappen. Vi vill inte använda WordPress-uppladdningsstrukturen som standard där alla dina bilder lagras i ett månadsformat. Istället ville vi skapa vår egen mapp i katalogen "uppladdningar" och lagra bilder i den. Det kräver att jag skriver ett program som kan ladda upp filer via HTML-formuläret.
I den här artikeln studerar vi hur man laddar upp filer programmatiskt i WordPress. Jag kommer att visa dig två sätt att utföra denna uppgift. En är genom inbyggd funktion wp_upload_bits() och en annan använder metoden move_uploaded_file ().
Ladda upp filer programmatiskt i WordPress
För att komma igång, skapa ett enkelt HTML-formulär med filinmatning och skicka-knappen. Du kan placera det här formuläret på din sida eller inlägg.
<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>
Ladda upp fil med wp_upload_bits
Med wp_upload_bits()
funktionen lagras din fil i uppladdningskatalogen. Du hittar din fil i den aktuella månadsmappen (till exempel wp-content / uploads / 2020-> 03-> your_file). Denna funktion flyttar inte en webbläsad fil till uppladdningsmappen. Istället skapar den en ny fil med innehållet i filerna. Användningen av denna metod är enkel. functions.php
Lägg till koden i din fil enligt följande.
<?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');
Om du skriver ut $upload
variabeln får du en matris som innehåller katalog och URL-väg för den uppladdade filen. Användaren kan spara URL-sökvägen i databasen med $upload['url]
.
Ladda upp filen i den anpassade katalogen
Som nämnts ovan, med hjälp av wp_upload_bits()
metoden lagras dina filer med standardhierarkin i WordPress-mappen. Men tänk om du vill lagra filer i din egen katalog?
I så fall måste du skapa din anpassade mapp i katalogen "uppladdningar" och flytta din fil till den mappen. Låt oss säga att du vill lagra dina filer i katalogen ‘uppladdningar / produktbilder’. I koden nedan skapar vi körtid för produktbilder och lagrar filer inuti den. Denna kod kan du också skriva i functions.php
filen.
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');
Här använder jag metoden wp_unique_filename () som ger det unika filnamnet för den angivna katalogen.
Det är allt! Det handlar om hur man laddar upp filer programmatiskt i WordPress. Använder du någon annan metod för en liknande uppgift? Vänligen dela i kommentarsektionen nedan.
relaterade artiklar
- Hur man använder wp_get_image_editor Metod för att ändra storlek på dina bilder i WordPress
- Hur man registrerar anpassade bildstorlekar och ändrar storlek på befintliga bilder i WordPress
- Hur man ställer in utvalda bilder programmatiskt i WordPress