WordPress อัปโหลดไฟล์โดยทางโปรแกรม: 3 วิธีปฏิบัติ
เผยแพร่แล้ว: 2022-10-20ตามค่าเริ่มต้น WordPress รองรับการอัปโหลดไฟล์ผ่านไลบรารีสื่อหรือหน้าจอแก้ไขโพสต์ เมื่อคุณอัปโหลดไฟล์ไปยังเว็บไซต์ของคุณโดยใช้ฟังก์ชันในตัวเหล่านี้ WordPress จะจัดการทุกอย่างให้คุณ ช่วยให้คุณสามารถดูไฟล์ที่อัปโหลดทั้งหมดและแทรกลงในโพสต์หรือหน้าของคุณ
อย่างไรก็ตาม คุณต้องการมากกว่านั้นเมื่อพูดถึงฟังก์ชันที่กำหนดเอง เช่น การอัปโหลดไฟล์ส่วนหน้า มีปลั๊กอินมากมายที่ช่วยคุณเพิ่ม แก้ไข และจัดการไฟล์โดยไม่ต้องปรับโค้ด แน่นอนว่าส่วนใหญ่ต้องเสียค่าธรรมเนียม
หากคุณไม่ต้องการจ่ายค่าปลั๊กอิน การอัปโหลดไฟล์โดยทางโปรแกรมไปยังไซต์ WordPress อาจเป็นวิธีแก้ปัญหา ในบทความนี้ เราจะแนะนำคุณเกี่ยวกับวิธีการทำสำเร็จโดยละเอียด
มาเริ่มกันเลย!
- ข้อสังเกตเล็กน้อย
- #1 อัปโหลดไฟล์ไปยังไลบรารีสื่อโดยทางโปรแกรมจาก URL
- #2 เพิ่มไฟล์ผ่านแบบฟอร์ม HTML
- #3 แทรกไฟล์ลงในแกลเลอรีที่กำหนดเองโดยทางโปรแกรม
- เคล็ดลับโบนัส: ปกป้องการอัปโหลดไฟล์ของคุณ
ข้อสังเกตเล็กน้อย
วิธีนี้รบกวนการทำงานของโค้ดเป็นหลัก ดังนั้น โปรดเลือกใช้เทคนิคนี้เฉพาะเมื่อคุณมีความรู้ด้านการเขียนโปรแกรมเท่านั้น มิฉะนั้น ทั้งไซต์ของคุณสามารถยุบได้ด้วยการเปลี่ยนแปลงที่ไม่เหมาะสมเพียงเล็กน้อย
ในกรณีที่คุณเพิ่งเริ่มต้นกับ WordPress เราขอแนะนำปลั๊กอิน Gravity Forms เพื่อยอมรับการอัปโหลดไฟล์ส่วนหน้า หรือตรวจสอบปลั๊กอิน 5 อันดับแรกสำหรับการอัปโหลดไฟล์ส่วนหน้าของ WordPress คุณยังสามารถใช้ไคลเอ็นต์ FTP เพื่ออัปโหลดไฟล์จากแบ็กเอนด์ได้
ยังต้องการเรียนรู้วิธีอัปโหลดไฟล์โดยทางโปรแกรมใน WordPress หรือไม่? อ่านต่อ!
#1 อัปโหลดไฟล์ไปยังไลบรารีสื่อโดยทางโปรแกรมจาก URL
คุณท่องอินเทอร์เน็ตและค้นหาภาพที่ยอดเยี่ยมที่คุณต้องการอัปโหลดไปยังไลบรารีสื่อ WordPress ของคุณ นี่คือเส้นทางที่จะทำเช่นนั้น:
- คัดลอก URL ของรูปภาพ
- ฝังโค้ดด้านล่างลงในไซต์ของคุณและใส่ URL ที่คุณคัดลอก:
/** * อัปโหลดรูปภาพจาก URL โดยทางโปรแกรม * * @ผู้เขียน Misha Rudrastyh * @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() ได้ require_once( ABSPATH . 'wp-admin/includes/file.php' ); // ดาวน์โหลดไปที่ temp dir $temp_file = download_url( $image_url ); if( is_wp_error( $temp_file ) ) { คืนค่าเท็จ; } // ย้ายไฟล์ temp ไปยังไดเร็กทอรีอัพโหลด $file = อาร์เรย์ ( 'name' => basename( $image_url ), 'type' => mime_content_type( $temp_file ), 'tmp_name' => $temp_file, 'ขนาด' => ขนาดไฟล์( $temp_file ), ); $sideload = wp_handle_sideload( $ไฟล์ อาร์เรย์ ( 'test_form' => false // ไม่ต้องตรวจสอบพารามิเตอร์ 'action' ) ); if( ! ว่างเปล่า ( $sideload[ 'error' ] ) ) ) { // คุณอาจส่งคืนข้อความแสดงข้อผิดพลาดหากต้องการ คืนค่าเท็จ; } // ได้เวลาเพิ่มรูปภาพที่อัปโหลดของเราลงในไลบรารีสื่อ WordPress $attachment_id = wp_insert_attachment( อาร์เรย์ ( 'guid' => $sideload[ 'url' ], 'post_mime_type' => $sideload[ 'type' ], 'post_title' => basename( $sideload[ 'file' ] ), 'post_content' => '', 'post_status' => 'สืบทอด', ), $sideload[ 'ไฟล์' ] ); if( is_wp_error( $attachment_id ) || ! $attachment_id ) { คืนค่าเท็จ; } // อัปเดตข้อมูลเมตา สร้างขนาดรูปภาพใหม่ require_once( 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 อย่างง่ายพร้อมปุ่มป้อนไฟล์และส่ง คุณสามารถวางแบบฟอร์มนี้บนหน้าหรือโพสต์ใดก็ได้ ซึ่งช่วยให้ผู้ใช้สามารถอัปโหลดไฟล์ไปยังไซต์ของคุณได้ ทำตามขั้นตอนต่อไปนี้เพื่ออัปโหลดไฟล์โดยทางโปรแกรมใน WordPress ผ่านแบบฟอร์ม HTML:
- ฝังโค้ดต่อไปนี้เพื่อสร้างฟอร์ม HTML อย่างง่าย:
1 <h2>อัปโหลดไฟล์</h2> 2 <form method="post" enctype="multipart/form-data"> 3 <input type="file" name="file" จำเป็น /> 4 <input type="submit" name="upload_file" value="Upload" /> 5 </form>
ด้วยการใช้ ฟังก์ชัน wp_upload_bits() WordPress จะจัดเก็บไฟล์ที่คุณอัปโหลดไว้ภายในไดเร็กทอรี อัพโหลด โดยอัตโนมัติ คุณสามารถค้นหาไฟล์ของคุณได้ในโฟลเดอร์เดือนปีปัจจุบัน เช่น wp-content/uploads/2020->03->your_file

2. ใส่รหัสนี้ในไฟล์ functions.php ของคุณ:
1 <?php 2 ฟังก์ชั่น fn_upload_file () { 3 ถ้า ( 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 ของไฟล์ที่อัปโหลด ผู้ใช้สามารถค้นหาและบันทึก URL เหล่านี้ในฐานข้อมูลโดยใช้ $upload['url]
ดังที่กล่าวไว้ข้างต้น เมื่อใช้วิธี wp_upload_bits() ไฟล์ของคุณจะถูกจัดเก็บไว้ในลำดับชั้นของโฟลเดอร์ WordPress เริ่มต้น แต่ถ้าคุณต้องการบันทึกไฟล์ในไดเร็กทอรีของคุณเองล่ะ
ในสถานการณ์นั้น คุณควรสร้างโฟลเดอร์แบบกำหนดเองในไดเร็กทอรี อัพโหลด และย้ายไฟล์ไปไว้ในนั้น สมมติว่าคุณต้องการเก็บไฟล์ของคุณไว้ในไดเร็กทอรี uploads/product-images ด้วยรหัสด้านล่าง คุณสามารถสร้างโฟลเดอร์ รูปภาพผลิตภัณฑ์ และจัดเก็บไฟล์ไว้ข้างในได้
เขียนโค้ดในไฟล์ functions.php :
1 ฟังก์ชั่น fn_upload_file() { 2 ถ้า ( isset($_POST['upload_file']) ) { 3 $upload_dir = wp_upload_dir(); 4 5 ถ้า ( ! ว่างเปล่า ( $upload_dir['basedir'] ) ) { 6 $user_dirname = $upload_dir['basedir'].'/product-images'; 7 ถ้า ( ! 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);
เคล็ดลับโบนัส: ปกป้องการอัปโหลดไฟล์ของคุณ
มีวิธีใดบ้างในการป้องกันการเข้าถึงไฟล์ที่คุณอัปโหลดโดยไม่ได้รับอนุญาต คำตอบคือใช่ สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำโดยละเอียดเกี่ยวกับเคล็ดลับ .htaccess ที่มีประโยชน์ 21 ข้อเพื่อรักษาความปลอดภัยไฟล์ WordPress เนื่องจาก .htaccess เป็นไฟล์สำคัญที่ช่วยให้ไซต์ของคุณทำงานได้อย่างราบรื่น จึงควรระมัดระวังเมื่อทำการเปลี่ยนแปลงใดๆ
ในทางกลับกัน ให้ติดตั้งปลั๊กอิน PDA Gold หากคุณไม่มั่นใจในทักษะการเขียนโค้ดของคุณ จะช่วยให้คุณจัดการกับความยุ่งยากโดยไม่ต้องกังวลเกี่ยวกับผลกระทบต่อไฟล์ .htaccess
อีกวิธีหนึ่งที่ควรพิจารณาคือใช้รหัสผ่านป้องกันไฟล์ WordPress ของคุณ ตรวจสอบบทความของเราสำหรับรายละเอียดเพิ่มเติม
อัปโหลดไฟล์โดยทางโปรแกรมใน WordPress อย่างผู้เชี่ยวชาญ!
เราได้แสดงให้คุณเห็น 3 วิธีในการอัปโหลดไฟล์โดยทางโปรแกรมบน WordPress ตอนนี้คุณสามารถอัปโหลดไฟล์ไปยังไลบรารีสื่อหรือผ่านแบบฟอร์มอัปโหลดไฟล์ HTML ฟรอนท์เอนด์ได้อย่างง่ายดาย นอกจากนี้ยังสามารถเพิ่มไฟล์ลงในแกลเลอรีที่กำหนดเองได้อีกด้วย และที่สำคัญที่สุด อย่าลืมปกป้องไฟล์ WordPress ของคุณโดยใช้โค้ดหรือติดตั้งปลั๊กอิน
มันคือทั้งหมดที่เกี่ยวกับวิธีการอัปโหลดไฟล์โดยทางโปรแกรมใน WordPress คุณรู้วิธีอื่น ๆ หรือไม่? กรุณาแบ่งปันกับเราในส่วนความคิดเห็นด้านล่าง