ปฏิเสธการอัปโหลดภาพที่มีขนาดผิดปกติโดยใช้ Media Uploader


12

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

ฉันรู้ว่าฉันสามารถทำได้ด้วยเครื่องมืออัปโหลดที่กำหนดเอง แต่ฉันต้องการทำกับ Media Uploader ปกติ ฉันยังตระหนักถึงwp_handle_upload_prefilterซึ่งฉันใช้ในการตรวจสอบชื่อไฟล์และสร้างข้อความแสดงข้อผิดพลาดที่กำหนดเองตามข้อกำหนดทั่วไปแล้ว สิ่งที่ฉันต้องการในตอนนี้คือวิธีใช้ข้อกำหนดที่กำหนดเองเพื่อปฏิเสธการอัปโหลดตามฟิลด์ที่เรากำลังอัปโหลด

ฉันยังทราบถึงความแตกต่างของภาพเด่นจากโพสต์รูปภาพเมื่ออัปโหลดแต่ฉันต้องการวิธีแก้ไขปัญหาล่วงหน้า

นี่จะมีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ความคิดเห็นเกี่ยวกับวิธีการเกี่ยวกับการแจ้งwp_handle_upload_prefilter(หรือคล้ายกัน) ของสาขาที่เรากำลังเผชิญกับ?


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

ถ้าผมบอกว่าที่กำหนดเองการใช้งานผมหมายถึงที่กำหนดเองของ WordPress สื่ออัพโหลดเหมือนเช่นที่กล่าวถึงที่นี่
นิโคไล

ใช่ฉันเคยทำสิ่งนี้มาก่อนในสมัยของตัวอัปโหลดแฟลช คราวนี้ฉันจะไปทางที่สะอาดกว่า แต่ก็อาจเป็นไปไม่ได้ จะมองเข้าไปในนั้นขอบคุณ!
moraleida

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

1
คุณจะได้รับสิ่งนี้หรือไม่? ถ้าไม่ใช่ แต่คุณมีรหัสที่คุณใช้อยู่ให้โพสต์ไว้ ฉันยินดีที่จะตั้งค่าคำถามมากมายหากมีพื้นฐานมากกว่านั้น
นิโคไล

คำตอบ:


4

ในตัวจัดการของคุณหากคุณตั้งค่า 'ข้อผิดพลาด' ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นและจะยกเลิกการอัปโหลด

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

หากผู้ใช้ของคุณพยายามอัปโหลดขนาดอื่นข้อความจะเป็น:

thefile.png has failed to upload due to an error  
Size must be exactly 800 * 600

โปรดทราบว่าwp_handle_upload_prefilterการดำเนินการอัปโหลดมาเร็วมากดังนั้นคุณอาจต้องการทดสอบว่าไฟล์ได้รับการอัปโหลดอย่างถูกต้องหรือไม่ (จากจุดยืน HTTP) และเป็นรูปภาพก่อนทดสอบขนาด

Ref: funtion wp_handle_upload()ในไฟล์ corewp-admin/includes/file.php


ใช่นี่คือสิ่งที่ฉันทำอยู่แล้วเพื่อตรวจสอบคุณสมบัติชื่อไฟล์และ svg สิ่งที่ฉันต้องการในตอนนี้คือวิธีส่งพารามิเตอร์อื่นไปยังตัวกรอง (หรืออีกอัน) ซึ่งระบุว่าจะอัปโหลดฟิลด์ใดเพื่อให้ฉันสามารถใช้ข้อ จำกัด ที่แตกต่างกันสำหรับฟิลด์ต่างๆ ตอนนี้จริงถูกระงับแล้ว ฉันจะอัปเดตคำถามในภายหลังด้วยการค้นพบของฉัน
moraleida
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.