✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Programowe przesyłanie plików w WordPress

41

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.phppliku 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 $uploadzmienną, 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.phppliku.

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

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów