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 คุณรู้วิธีอื่น ๆ หรือไม่? กรุณาแบ่งปันกับเราในส่วนความคิดเห็นด้านล่าง
