Programowe przesyłanie plików w WordPress
Ostatnio pracowałem nad projektem, w którym chcieliśmy wgrać obrazy w niestandardowym folderze. Nie chcemy używać domyślnej struktury przesyłania WordPress, w której wszystkie Twoje obrazy są przechowywane w formacie rocznym. Zamiast tego chcieliśmy stworzyć własny folder w katalogu „uploads" i przechowywać w nim obrazy. Wymaga ode mnie napisania programu, który może przesyłać pliki za pomocą formularza HTML.
W tym artykule dowiemy się, jak programowo przesyłać pliki w WordPressie. Pokażę Ci dwa sposoby wykonania tego zadania. Jedna to wbudowana funkcja wp_upload_bits(), a druga metoda move_uploaded_file().
Programowe przesyłanie plików w WordPress
Aby rozpocząć, utwórz prosty formularz HTML z wejściem pliku i przyciskiem przesyłania. Możesz umieścić ten formularz na swojej stronie lub w poście.
<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>
Prześlij plik za pomocą wp_upload_bits
Używając wp_upload_bits()
funkcji, twój plik będzie przechowywany w katalogu uploads. Swój plik znajdziesz w folderze bieżącego roku i miesiąca (np. wp-content/uploads/2020->03->your_file). Ta funkcja nie przenosi przeglądanego pliku do folderu przesyłania. Zamiast tego utworzy nowy plik z zawartością plików. Zastosowanie tej metody jest proste. W swoim functions.php
pliku dodaj kod w następujący sposób.
<?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');
Jeśli wydrukujesz $upload
zmienną, otrzymasz tablicę zawierającą katalog i ścieżkę URL przesłanego pliku. Użytkownik może zapisać ścieżkę URL w bazie danych za pomocą $upload['url]
.
Prześlij plik do katalogu niestandardowego
Jak wspomniano powyżej, przy użyciu wp_upload_bits()
metody Twoje pliki będą przechowywane przy użyciu domyślnej hierarchii folderów WordPress. Ale co, jeśli chcesz przechowywać pliki we własnym katalogu?
W takim przypadku musisz utworzyć własny folder w katalogu „przesyłane” i przenieść plik do tego folderu. Załóżmy, że chcesz przechowywać pliki w katalogu „uploads/product-images”. W poniższym kodzie utworzymy środowisko uruchomieniowe folderu „product-images” i będziemy przechowywać w nim pliki. Ten kod również możesz zapisać w functions.php
pliku.
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');
Tutaj używam metody wp_unique_filename(), która daje unikalną nazwę pliku dla danego katalogu.
Otóż to! Chodzi o to, jak programowo przesyłać pliki w WordPressie. Czy używasz innej metody do podobnego zadania? Udostępnij w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak korzystać z metody wp_get_image_editor do zmiany rozmiaru obrazów w WordPress
- Jak zarejestrować niestandardowe rozmiary obrazów i zmienić rozmiar istniejących obrazów w WordPress?
- Jak programowo ustawić wyróżniony obraz w WordPress