WordPress 以編程方式上傳文件:3 種實用方法
已發表: 2022-10-20默認情況下,WordPress 支持通過其媒體庫或帖子編輯屏幕上傳文件。 當您使用這些內置功能將文件上傳到您的網站時,WordPress 會為您處理一切。 它允許您查看所有上傳的文件並將它們插入到您的帖子或頁面中。
但是,在自定義功能(例如前端文件上傳)方面,您需要的遠不止這些。 有很多可用的插件可幫助您添加、修改和管理文件,而無需調整代碼。 當然,大多數都需要收費。
如果您不想為插件付費,以編程方式將文件上傳到您的 WordPress 網站可能是一種解決方案。 在本文中,我們將詳細指導您如何實現這一目標。
讓我們開始吧!
- 一點通知
- #1 以編程方式從 URL 將文件上傳到媒體庫
- #2 通過 HTML 表單添加文件
- #3 以編程方式將文件插入自定義圖庫
- 額外提示:保護您的文件上傳
一點通知
這種方法主要是乾擾代碼。 因此,請僅在您具備一些編碼知識的情況下才選擇使用此技術。 否則,您的整個網站可能會因一個小的不當更改而崩潰。
如果您剛開始使用 WordPress,我們強烈建議您使用 Gravity Forms 插件來接受前端文件上傳。 或者,查看 WordPress 前端文件上傳的前 5 個插件。 您還可以使用 FTP 客戶端從後端上傳文件。
仍然,想學習如何在 WordPress 中以編程方式上傳文件嗎? 繼續閱讀!
#1 以編程方式從 URL 將文件上傳到媒體庫
您瀏覽互聯網並找到想要上傳到 WordPress 媒體庫的精彩圖片。 這是這樣做的路線:
- 複製圖像的 URL。
- 將以下代碼嵌入您的網站並插入您複製的 URL:
/** * 以編程方式從 URL 上傳圖片 * * @作者米莎·魯德拉斯蒂 * @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url */ 功能 rudr_upload_file_by_url( $image_url ) { // 它允許我們使用 download_url() 和 wp_handle_sideload() 函數 需要一次(ABSPATH。'wp-admin/includes/file.php'); // 下載到臨時目錄 $temp_file = download_url($image_url); 如果(is_wp_error($temp_file)){ 返回假; } // 將臨時文件移動到上傳目錄 $文件 = 數組( '名稱' => 基本名稱( $image_url ), '類型' => mime_content_type( $temp_file ), 'tmp_name' => $temp_file, '大小' => 文件大小($temp_file), ); $sideload = wp_handle_sideload( $文件, 大批( 'test_form' => false // 不需要檢查 'action' 參數 ) ); 如果(!空($sideload['錯誤'])){ // 如果你願意,你可以返回錯誤信息 返回假; } // 是時候將我們上傳的圖片添加到 WordPress 媒體庫中了 $attachment_id = wp_insert_attachment( 大批( 'guid' => $sideload['url'], 'post_mime_type' => $sideload['type'], 'post_title' => 基本名稱($sideload['file']), 'post_content' => '', 'post_status' => '繼承', ), $sideload['文件'] ); if( is_wp_error( $attachment_id ) || ! $attachment_id ) { 返回假; } // 更新元數據,重新生成圖像大小 需要一次(ABSPATH。'wp-admin/includes/image.php'); wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata($attachment_id, $sideload['file']) ); 返回 $attachment_id; }
而已!
#2 通過 HTML 表單添加文件
第二種方法是創建一個帶有文件輸入和提交按鈕的簡單 HTML 表單。 您可以將此表單放在任何頁面或帖子上,從而允許用戶將文件上傳到您的站點。 採取以下步驟通過 HTML 表單在 WordPress 中以編程方式上傳文件:
- 嵌入以下代碼來構建一個簡單的 HTML 表單:
1 <h2>上傳文件</h2> 2 <form method="post" enctype="multipart/form-data"> 3 <input type="file" name="file" required /> 4 <input type="submit" name="upload_file" value="Upload" /> 5 </形式>
通過使用wp_upload_bits()函數,WordPress 會自動將您上傳的文件存儲在上傳目錄中。 您可以在當前年月文件夾中找到您的文件,例如wp-content/uploads/2020->03->your_file 。

2. 將此代碼插入您的functions.php文件中:
1 <?php 2 函數 fn_upload_file() { 3 if ( isset($_POST['upload_file']) ) { 4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']); 5 // 保存到數據庫 $upload['url] 6 } 7 } 8 add_action('init', 'fn_upload_file');
如果您打印$upload變量,您將獲得一個包含目錄和上傳文件的 URL 的數組。 用戶可以使用$upload['url]在數據庫中查找並保存這些 URL。
如上所述,一旦使用wp_upload_bits()方法,您的文件將存儲在默認的 WordPress 文件夾層次結構中。 但是,如果您希望將文件保存在自己的目錄中呢?
在這種情況下,您應該在上傳目錄中創建一個自定義文件夾並將文件移動到其中。 假設您要將文件存儲在uploads/product-images目錄中。 使用下面的代碼,您可以生成product-images文件夾並將文件存儲在其中。
在functions.php文件中編寫代碼:
1 函數 fn_upload_file() { 2 if ( isset($_POST['upload_file']) ) { 3 $upload_dir = wp_upload_dir(); 4 5 if ( !empty( $upload_dir['basedir'] ) ) { 6 $user_dirname = $upload_dir['basedir'].'/product-images'; 7 if ( !file_exists( $user_dirname ) ) { 8 wp_mkdir_p($用戶目錄名); 9 } 10 11 $filename = wp_unique_filename($user_dirname, $_FILES['file']['name']); 12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename); 13 // 保存到數據庫 $upload_dir['baseurl'].'/product-images/'.$filename; 14 } 15 } 16 } 17 add_action('init', 'fn_upload_file');
在這裡,我們應用wp_unique_filename()技術為給定目錄提供唯一的文件名。
#3 以編程方式將文件插入自定義圖庫
假設您有一個畫廊添加為一個名為“畫廊”的自定義元字段。 您通過media_sideload_image()上傳大量圖像。 然後,序列化它們的 ID 並通過update_post_meta( $post_id , 'gallery', $serialized)將它們插入到圖庫中;
因此,當您在後端編輯帖子頁面中查看帖子時,您會看到所有上傳的照片。 但是,在您點擊後端的更新之前,這些圖片不會在前端的幻燈片中顯示。
那麼,如何在創建圖庫後以編程方式單擊更新按鈕? 只需按照以下指南進行操作:
- 更新帖子庫後,添加此代碼以編程方式選擇更新按鈕:
wp_update_post(['ID'=>$post_id]);
2.更新緩存以使用搜索和過濾功能:
do_action('search_filter_update_post_cache', $post_id);
額外提示:保護您的文件上傳
有什麼方法可以防止未經授權訪問您上傳的文件? 答案是肯定的。 有關更多信息,請參閱我們的詳細指南,了解 21 種有用的 .htaccess 技巧來保護 WordPress 文件。 由於 .htaccess 是一個讓您的網站順利運行的關鍵文件,因此在進行任何更改時要小心。
另一方面,如果您對自己的編碼技能沒有信心,請安裝 PDA Gold 插件。 它將幫助您處理麻煩,而不必擔心影響 .htaccess 文件。
另一個值得考慮的方法是使用密碼保護您的 WordPress 文件。 查看我們的文章了解更多詳情。
像專家一樣在 WordPress 中以編程方式上傳文件!
我們向您展示了在 WordPress 中以編程方式上傳文件的 3 種方法。 現在,您可以輕鬆地將文件上傳到媒體庫或通過 HTML 前端文件上傳表單。 將文件添加到您的自定義畫廊也是可以實現的。 最重要的是,不要忘記使用代碼或安裝插件來保護您的 WordPress 文件。
這完全是關於如何在 WordPress 中以編程方式上傳文件。 你知道其他方法嗎? 請在下面的評論部分與我們分享。