Lataa tiedostot ohjelmallisesti WordPressiin
Viime aikoina työskentelin projektissa, jossa halusimme ladata kuvia mukautettuun kansioon. Emme halua käyttää oletusarvoista WordPress-latausrakennetta, jossa kaikki kuvasi tallennetaan vuoden ja kuukauden muodossa. Sen sijaan halusimme luoda oman kansion lataamishakemistoon ja tallentaa siihen kuvia. Se vaatii minua kirjoittamaan ohjelman, joka voi ladata tiedostoja HTML-lomakkeen kautta.
Tässä artikkelissa tutkitaan tiedostojen lataamista ohjelmallisesti WordPress-sovelluksessa. Näytän sinulle kaksi tapaa suorittaa tämä tehtävä. Yksi tapahtuu sisäänrakennetun wp_upload_bits() -funktion kautta ja toinen käyttää move_uploaded_file () -menetelmää.
Lataa tiedostot ohjelmallisesti WordPressiin
Aloita luomalla yksinkertainen HTML-lomake, jossa on tiedostojen syöttö- ja lähetyspainike. Voit sijoittaa tämän lomakkeen sivullesi tai viestiisi.
<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>
Lähetä tiedosto wp_upload_bits-tiedostolla
wp_upload_bits()
Funktiota käyttämällä tiedosto tallennetaan lataushakemistoon. Tiedostosi löytyy kuluvan vuoden kuukauden kansiosta (esim. Wp-content / uploads / 2020-> 03-> your_file). Tämä toiminto ei siirrä selattua tiedostoa lähetyskansioon. Sen sijaan se luo uuden tiedoston tiedostojen sisällöllä. Tämän menetelmän käyttö on yksinkertaista. Teidän functions.php
tiedosto, lisätä koodin seuraavasti.
<?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');
Jos tulostat $upload
muuttujan, saat taulukon, joka sisältää hakemiston ja ladatun tiedoston URL-polun. Käyttäjä voi tallentaa URL-polun tietokantaan käyttämällä $upload['url]
.
Lähetä tiedosto mukautettuun hakemistoon
Kuten edellä mainittiin, wp_upload_bits()
menetelmällä tiedostot tallennetaan käyttämällä WordPress-oletuskansiohierarkiaa. Mutta entä jos haluat tallentaa tiedostot omaan hakemistoon?
Siinä tapauksessa sinun on luotava mukautettu kansio lataamishakemistoon ja siirrettävä tiedosto kyseiseen kansioon. Oletetaan, että haluat tallentaa tiedostosi hakemistoon ‘uploads / product-images’. Alla olevaan koodiin luomme ‘product-images’ -kansion ajonaikaisen ajan ja tallennamme tiedostot siihen. Tämän koodin voit myös kirjoittaa functions.php
tiedostoon.
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');
Tässä käytän wp_unique_filename () -menetelmää, joka antaa yksilöllisen tiedostonimen annetulle hakemistolle.
Se siitä! Kyse on siitä, miten tiedostoja lähetetään ohjelmallisesti WordPressiin. Käytätkö muuta menetelmää samankaltaiseen tehtävään? Ole hyvä ja jaa alla olevassa kommenttiosassa.