Programowe przesyłanie plików WordPress: 3 praktyczne sposoby
Opublikowany: 2022-10-20Domyślnie WordPress obsługuje przesyłanie plików za pośrednictwem biblioteki multimediów lub ekranu edycji postów. Kiedy przesyłasz pliki do swojej witryny za pomocą tych wbudowanych funkcji, WordPress obsługuje wszystko za Ciebie. Umożliwia przeglądanie wszystkich przesłanych plików i wstawianie ich do swoich postów lub stron.
Potrzebujesz jednak czegoś więcej, jeśli chodzi o niestandardowe funkcje, takie jak przesyłanie plików frontendowych. Dostępnych jest wiele wtyczek, które pomagają dodawać, modyfikować i zarządzać plikami bez dostosowywania kodu. Oczywiście większość z nich wymaga opłaty.
Jeśli nie chcesz płacić za wtyczki, rozwiązaniem może być programowe przesyłanie plików do witryny WordPress. W tym artykule szczegółowo wyjaśnimy, jak to osiągnąć.
Zacznijmy!
- Mała uwaga
- #1 Programowe przesyłanie plików do biblioteki multimediów z adresów URL
- #2 Dodaj pliki za pomocą formularza HTML
- #3 Programowo wstawiaj pliki do galerii niestandardowej
- Dodatkowa wskazówka: chroń przesyłane pliki
Mała uwaga
Ta metoda głównie ingeruje w kod. Dlatego zaakceptuj tę technikę tylko wtedy, gdy masz pewną wiedzę na temat kodowania. W przeciwnym razie cała witryna może się zwinąć po jednej małej niewłaściwej zmianie.
Jeśli dopiero zaczynasz korzystać z WordPressa, zdecydowanie zalecamy wtyczkę Gravity Forms, aby zaakceptować przesyłanie plików frontendowych. Lub sprawdź 5 najlepszych wtyczek do przesyłania plików frontendu WordPress. Możesz także użyć klienta FTP do przesyłania plików z zaplecza.
Nadal chcesz dowiedzieć się, jak programowo przesyłać pliki w WordPressie? Czytaj dalej!
#1 Programowe przesyłanie plików do biblioteki multimediów z adresów URL
Przeglądasz Internet i znajdujesz wspaniałe obrazy, które chcesz przesłać do swojej biblioteki multimediów WordPress. Oto droga do tego:
- Skopiuj adres URL obrazu.
- Umieść poniższy kod w swojej witrynie i wstaw skopiowany adres URL:
/** * Prześlij obraz z adresu URL programowo * * @autor Misha Rudrastyh * @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url */ funkcja rudr_upload_file_by_url( $image_url ) { // pozwala nam korzystać z funkcji download_url() i wp_handle_sideload() require_once( ABSPATH . 'wp-admin/includes/file.php' ); // pobierz do katalogu tymczasowego $temp_file = download_url( $image_url ); if ( is_wp_error ( $ plik_tymczasowy ) ) { zwróć fałsz; } // przenieś plik tymczasowy do katalogu uploads $plik = tablica( 'nazwa' => nazwa bazowa ( $image_url ), 'type' => mime_content_type( $temp_file ), 'tmp_name' => $temp_file, 'rozmiar' => rozmiar_pliku( $temp_file ), ); $ sideload = wp_handle_sideload( $plik, szyk( 'test_form' => false // nie trzeba sprawdzać parametru 'action' ) ); if( ! empty( $sideload[ 'błąd' ] ) ) { // możesz zwrócić komunikat o błędzie, jeśli chcesz zwróć fałsz; } // nadszedł czas, aby dodać nasz przesłany obraz do biblioteki multimediów WordPress $attachment_id = wp_insert_attachment( szyk( 'guid' => $sideload[ 'url'], 'post_mime_type' => $sideload[ 'typ' ], 'post_title' => nazwa podstawowa( $sideload[ 'plik' ] ), 'post_content' => '', 'post_status' => 'dziedziczy', ), $sideload[ 'plik' ] ); if ( is_wp_error ( $ id_załącznika ) || ! $ id_załącznika ) { zwróć fałsz; } // zaktualizuj metadane, zregeneruj rozmiary obrazków require_once( ABSPATH . 'wp-admin/includes/image.php' ); wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata ($attachment_id, $sideload['plik']) ); zwróć $attachment_id; }
Otóż to!
#2 Dodaj pliki za pomocą formularza HTML
Drugą metodą jest utworzenie prostego formularza HTML z wejściem pliku i przyciskiem przesyłania. Możesz umieścić ten formularz na dowolnej stronie lub poście, co umożliwia użytkownikom przesyłanie plików do Twojej witryny. Wykonaj następujące kroki, aby przesłać pliki programowo w WordPress za pomocą formularza HTML:
- Osadź następujący kod, aby zbudować prosty formularz HTML:
1 <h2>Prześlij plik</h2> 2 <form method="post" enctype="multipart/form-data"> 3 <input type="plik" name="plik" wymagany /> 4 <input type="prześlij" name="prześlij_plik" value="Prześlij" /> 5 </form>
Korzystając z funkcji wp_upload_bits() , WordPress automatycznie zapisze przesłane pliki w katalogu przesyłania . Możesz znaleźć swoje pliki w bieżącym folderze rok-miesiąc, na przykład wp-content/uploads/2020->03->your_file .

2. Wstaw ten kod do pliku functions.php :
1 <?php 2 funkcja fn_upload_file() { 3 if ( isset($_POST['upload_file']) ) { 4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']); 5 // zapisz do bazy danych $upload['url] 6} 7} 8 add_action('init', 'fn_upload_file');
Jeśli wydrukujesz zmienną $upload , otrzymasz tablicę zawierającą katalog i adresy URL przesłanych plików. Użytkownicy mogą znaleźć i zapisać te adresy URL w bazie danych za pomocą $upload['url] .
Jak wspomniano powyżej, po użyciu metody wp_upload_bits() Twoje pliki będą przechowywane w domyślnej hierarchii folderów WordPress. Ale co, jeśli chcesz zapisywać pliki we własnym katalogu?
W takiej sytuacji powinieneś utworzyć niestandardowy folder w katalogu uploads i przenieść do niego pliki. Załóżmy, że chcesz przechowywać pliki w katalogu uploads/product-images . Za pomocą poniższego kodu możesz wygenerować folder obrazów produktów i przechowywać w nim pliki.
Napisz kod w pliku functions.php :
1 funkcja fn_upload_file() { 2 if ( isset($_POST['upload_file']) ) { 3 $katalog_przesyłania = wp_katalog_przesyłania(); 4 5 if ( ! empty( $upload_dir['basedir'] ) ) { 6 $user_dirname = $upload_dir['basedir'].'/product-images'; 7 if ( ! file_exists ( $ nazwa_użytkownika ) ) { 8 wp_mkdir_p ( $ nazwa_użytkownika ); 9} 10 11 $nazwa_pliku = wp_unique_nazwa_pliku( $nazwa_użytkownika, $_FILES['plik']['nazwa'] ); 12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename); 13 // zapisz do bazy danych $upload_dir['baseurl'].'/product-images/'.$filename; 14 } 15 } 16 } 17 add_action('init', 'fn_upload_file');
Tutaj stosujemy technikę wp_unique_filename() , aby nadać danemu katalogowi unikalną nazwę pliku.
#3 Programowo wstawiaj pliki do galerii niestandardowej
Załóżmy, że masz galerię dodaną jako niestandardowe pole meta o nazwie „galeria”. Przesyłasz wiele obrazów za pomocą media_sideload_image() . Następnie zserializuj ich identyfikatory i wstaw je do galerii przez update_post_meta( $post_id , 'gallery', $serialized) ;
W związku z tym, gdy spojrzysz na post na stronie Edytuj post zaplecza, zobaczysz wszystkie przesłane zdjęcia. Jednak te zdjęcia nie będą wyświetlane w pokazie slajdów w interfejsie użytkownika, dopóki nie klikniesz Aktualizuj w interfejsie.
Jak więc programowo kliknąć przycisk Aktualizuj po utworzeniu galerii? Po prostu postępuj zgodnie z poniższym przewodnikiem:
- Po zaktualizowaniu galerii postów dodaj ten kod, aby programowo wybrać przycisk Aktualizuj :
wp_update_post(['ID'=>$post_id]);
2. Zaktualizuj pamięć podręczną, aby korzystać z funkcji wyszukiwania i filtrowania:
do_action('search_filter_update_post_cache', $post_id);
Dodatkowa wskazówka: chroń przesyłane pliki
Czy są jakieś sposoby zapobiegania nieautoryzowanemu dostępowi do przesłanych plików? Odpowiedź brzmi tak. Aby uzyskać więcej informacji, zapoznaj się z naszym szczegółowym przewodnikiem po 21 przydatnych sztuczkach .htaccess w celu zabezpieczenia plików WordPress. Ponieważ .htaccess jest krytycznym plikiem, który zapewnia płynne działanie Twojej witryny, zachowaj ostrożność podczas wprowadzania zmian.
Z drugiej strony zainstaluj wtyczkę PDA Gold, jeśli nie masz pewności co do swoich umiejętności kodowania. Pomoże Ci poradzić sobie z kłopotami bez martwienia się o wpływ na plik .htaccess.
Inną wartą rozważenia metodą jest ochrona hasłem plików WordPress. Sprawdź nasz artykuł, aby uzyskać więcej informacji.
Przesyłaj pliki programowo w WordPressie niczym ekspert!
Pokazaliśmy Ci 3 sposoby programowego przesyłania plików w WordPress. Teraz możesz bez wysiłku przesyłać pliki do biblioteki multimediów lub za pomocą formularza przesyłania plików HTML. Możliwe jest również dodawanie plików do własnej galerii. A co najważniejsze, nie zapomnij chronić swoich plików WordPress za pomocą kodu lub instalując wtyczki.
Chodzi o to, jak programowo przesyłać pliki w WordPressie. Czy znasz inne metody? Podziel się z nami w sekcji komentarzy poniżej.