WordPress อัปโหลดไฟล์โดยทางโปรแกรม: 3 วิธีปฏิบัติ

เผยแพร่แล้ว: 2022-10-20

ตามค่าเริ่มต้น WordPress รองรับการอัปโหลดไฟล์ผ่านไลบรารีสื่อหรือหน้าจอแก้ไขโพสต์ เมื่อคุณอัปโหลดไฟล์ไปยังเว็บไซต์ของคุณโดยใช้ฟังก์ชันในตัวเหล่านี้ WordPress จะจัดการทุกอย่างให้คุณ ช่วยให้คุณสามารถดูไฟล์ที่อัปโหลดทั้งหมดและแทรกลงในโพสต์หรือหน้าของคุณ

อย่างไรก็ตาม คุณต้องการมากกว่านั้นเมื่อพูดถึงฟังก์ชันที่กำหนดเอง เช่น การอัปโหลดไฟล์ส่วนหน้า มีปลั๊กอินมากมายที่ช่วยคุณเพิ่ม แก้ไข และจัดการไฟล์โดยไม่ต้องปรับโค้ด แน่นอนว่าส่วนใหญ่ต้องเสียค่าธรรมเนียม

หากคุณไม่ต้องการจ่ายค่าปลั๊กอิน การอัปโหลดไฟล์โดยทางโปรแกรมไปยังไซต์ WordPress อาจเป็นวิธีแก้ปัญหา ในบทความนี้ เราจะแนะนำคุณเกี่ยวกับวิธีการทำสำเร็จโดยละเอียด

มาเริ่มกันเลย!

  • ข้อสังเกตเล็กน้อย
  • #1 อัปโหลดไฟล์ไปยังไลบรารีสื่อโดยทางโปรแกรมจาก URL
  • #2 เพิ่มไฟล์ผ่านแบบฟอร์ม HTML
  • #3 แทรกไฟล์ลงในแกลเลอรีที่กำหนดเองโดยทางโปรแกรม
  • เคล็ดลับโบนัส: ปกป้องการอัปโหลดไฟล์ของคุณ

ข้อสังเกตเล็กน้อย

วิธีนี้รบกวนการทำงานของโค้ดเป็นหลัก ดังนั้น โปรดเลือกใช้เทคนิคนี้เฉพาะเมื่อคุณมีความรู้ด้านการเขียนโปรแกรมเท่านั้น มิฉะนั้น ทั้งไซต์ของคุณสามารถยุบได้ด้วยการเปลี่ยนแปลงที่ไม่เหมาะสมเพียงเล็กน้อย

ในกรณีที่คุณเพิ่งเริ่มต้นกับ WordPress เราขอแนะนำปลั๊กอิน Gravity Forms เพื่อยอมรับการอัปโหลดไฟล์ส่วนหน้า หรือตรวจสอบปลั๊กอิน 5 อันดับแรกสำหรับการอัปโหลดไฟล์ส่วนหน้าของ WordPress คุณยังสามารถใช้ไคลเอ็นต์ FTP เพื่ออัปโหลดไฟล์จากแบ็กเอนด์ได้

ยังต้องการเรียนรู้วิธีอัปโหลดไฟล์โดยทางโปรแกรมใน WordPress หรือไม่? อ่านต่อ!

#1 อัปโหลดไฟล์ไปยังไลบรารีสื่อโดยทางโปรแกรมจาก URL

คุณท่องอินเทอร์เน็ตและค้นหาภาพที่ยอดเยี่ยมที่คุณต้องการอัปโหลดไปยังไลบรารีสื่อ WordPress ของคุณ นี่คือเส้นทางที่จะทำเช่นนั้น:

  1. คัดลอก URL ของรูปภาพ
  2. ฝังโค้ดด้านล่างลงในไซต์ของคุณและใส่ 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:

  1. ฝังโค้ดต่อไปนี้เพื่อสร้างฟอร์ม 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) ;

ดังนั้น เมื่อคุณดูโพสต์ในหน้า แก้ไขโพสต์ คุณจะเห็นรูปภาพที่อัปโหลดทั้งหมด อย่างไรก็ตาม รูปภาพเหล่านี้จะไม่แสดงในสไลด์โชว์ในส่วนหน้าจนกว่าคุณจะกด อัปเดต ที่ส่วนหลัง

ดังนั้นคุณจะคลิกปุ่ม อัปเดต โดยทางโปรแกรมได้อย่างไรหลังจากที่คุณสร้างแกลเลอรีแล้ว เพียงทำตามคำแนะนำด้านล่าง:

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