{"id":27956,"date":"2021-05-18T15:59:00","date_gmt":"2021-05-18T12:59:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27956"},"modified":"2021-10-18T03:44:05","modified_gmt":"2021-10-18T00:44:05","slug":"programowe-przesylanie-plikow-w-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/programowe-przesylanie-plikow-w-wordpress\/","title":{"rendered":"Programowe przesy\u0142anie plik\u00f3w w WordPress"},"content":{"rendered":"<p>Ostatnio pracowa\u0142em nad projektem, w kt\u00f3rym chcieli\u015bmy wgra\u0107 obrazy w niestandardowym folderze. Nie chcemy u\u017cywa\u0107 domy\u015blnej struktury przesy\u0142ania WordPress, w kt\u00f3rej wszystkie Twoje obrazy s\u0105 przechowywane w formacie rocznym. Zamiast tego chcieli\u015bmy stworzy\u0107 w\u0142asny folder w katalogu \u201euploads&quot; i przechowywa\u0107 w nim obrazy. Wymaga ode mnie napisania programu, kt\u00f3ry mo\u017ce przesy\u0142a\u0107 pliki za pomoc\u0105 formularza HTML.<\/p>\n<p>W tym artykule dowiemy si\u0119, jak programowo przesy\u0142a\u0107 pliki w WordPressie. Poka\u017c\u0119 Ci dwa sposoby wykonania tego zadania. Jedna to wbudowana funkcja <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_upload_bits\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_upload_bits(),<\/a> a druga metoda <a href=\"https:\/\/www.php.net\/manual\/en\/function.move-uploaded-file.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">move_uploaded_file()<\/a>.<\/p>\n<h3>Programowe przesy\u0142anie plik\u00f3w w WordPress<\/h3>\n<p>Aby rozpocz\u0105\u0107, utw\u00f3rz prosty formularz HTML z wej\u015bciem pliku i przyciskiem przesy\u0142ania. Mo\u017cesz umie\u015bci\u0107 ten formularz na swojej stronie lub w po\u015bcie.<\/p>\n<pre><code>&lt;h2&gt;Upload a File&lt;\/h2&gt;\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"file\" required \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"upload_file\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h4>Prze\u015blij plik za pomoc\u0105 wp_upload_bits<\/h4>\n<p>U\u017cywaj\u0105c <code>wp_upload_bits()<\/code>funkcji, tw\u00f3j plik b\u0119dzie przechowywany w katalogu uploads. Sw\u00f3j plik znajdziesz w folderze bie\u017c\u0105cego roku i miesi\u0105ca (np. wp-content\/uploads\/2020-&gt;03-&gt;your_file). Ta funkcja nie przenosi przegl\u0105danego pliku do folderu przesy\u0142ania. Zamiast tego utworzy nowy plik z zawarto\u015bci\u0105 plik\u00f3w. Zastosowanie tej metody jest proste. W swoim <code>functions.php<\/code>pliku dodaj kod w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>&lt;?php\nfunction fn_upload_file() {\n\u00a0\u00a0\u00a0\u00a0if (isset($_POST['upload_file'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ save into database $upload['url]\n\u00a0\u00a0\u00a0\u00a0}\n}\nadd_action('init', 'fn_upload_file');<\/code><\/pre>\n<p>Je\u015bli wydrukujesz <code>$upload<\/code>zmienn\u0105, otrzymasz tablic\u0119 zawieraj\u0105c\u0105 katalog i \u015bcie\u017ck\u0119 URL przes\u0142anego pliku. U\u017cytkownik mo\u017ce zapisa\u0107 \u015bcie\u017ck\u0119 URL w bazie danych za pomoc\u0105 <code>$upload['url]<\/code>.<\/p>\n<h4>Prze\u015blij plik do katalogu niestandardowego<\/h4>\n<p>Jak wspomniano powy\u017cej, przy u\u017cyciu <code>wp_upload_bits()<\/code>metody Twoje pliki b\u0119d\u0105 przechowywane przy u\u017cyciu domy\u015blnej hierarchii folder\u00f3w WordPress. Ale co, je\u015bli chcesz przechowywa\u0107 pliki we w\u0142asnym katalogu?<\/p>\n<p>W takim przypadku musisz utworzy\u0107 w\u0142asny folder w katalogu \u201eprzesy\u0142ane&#8221; i przenie\u015b\u0107 plik do tego folderu. Za\u0142\u00f3\u017cmy, \u017ce chcesz przechowywa\u0107 pliki w katalogu \u201euploads\/product-images&#8221;. W poni\u017cszym kodzie utworzymy \u015brodowisko uruchomieniowe folderu \u201eproduct-images&#8221; i b\u0119dziemy przechowywa\u0107 w nim pliki. Ten kod r\u00f3wnie\u017c mo\u017cesz zapisa\u0107 w <code>functions.php<\/code>pliku.<\/p>\n<pre><code>function fn_upload_file() {\n\u00a0\u00a0\u00a0\u00a0if (isset($_POST['upload_file'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload_dir = wp_upload_dir();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! empty( $upload_dir['basedir'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user_dirname = $upload_dir['basedir'].'\/product-images';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! file_exists( $user_dirname)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_mkdir_p( $user_dirname );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'\/'. $filename);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ save into database $upload_dir['baseurl'].'\/product-images\/'.$filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\nadd_action('init', 'fn_upload_file');<\/code><\/pre>\n<p>Tutaj u\u017cywam metody <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_unique_filename\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_unique_filename()<\/a>, kt\u00f3ra daje unikaln\u0105 nazw\u0119 pliku dla danego katalogu.<\/p>\n<p>Ot\u00f3\u017c \u200b\u200bto! Chodzi o to, jak programowo przesy\u0142a\u0107 pliki w WordPressie. Czy u\u017cywasz innej metody do podobnego zadania? Udost\u0119pnij w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-korzystac-z-metody-wp_get_image_editor-do-zmiany-rozmiaru-obrazow-w-wordpress\/\" title=\"Jak korzysta\u0107 z metody wp_get_image_editor do zmiany rozmiaru obraz\u00f3w w WordPress\">Jak korzysta\u0107 z metody wp_get_image_editor do zmiany rozmiaru obraz\u00f3w w WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-zarejestrowac-niestandardowe-rozmiary-obrazow-i-zmienic-rozmiar-istniejacych-obrazow-w-wordpress\/\" title=\"Jak zarejestrowa\u0107 niestandardowe rozmiary obraz\u00f3w i zmieni\u0107 rozmiar istniej\u0105cych obraz\u00f3w w WordPress?\">Jak zarejestrowa\u0107 niestandardowe rozmiary obraz\u00f3w i zmieni\u0107 rozmiar istniej\u0105cych obraz\u00f3w w WordPress?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-programowo-ustawic-wyrozniony-obraz-w-wordpress\/\" title=\"Jak programowo ustawi\u0107 wyr\u00f3\u017cniony obraz w WordPress\">Jak programowo ustawi\u0107 wyr\u00f3\u017cniony obraz w WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak obs\u0142u\u017cy\u0107 zadanie przesy\u0142ania plik\u00f3w WordPress? W tym artykule wyja\u015bniamy, jak programowo przesy\u0142a\u0107 pliki w WordPressie. Poka\u017c\u0119 Ci jak przenosi\u0107 pliki<\/p>\n","protected":false},"author":1,"featured_media":21646,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[416,612],"tags":[847],"class_list":["post-27956","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-roznorodny","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27956"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27956\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21646"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}