add_image_size () สำหรับประเภทโพสต์ที่เฉพาะเจาะจง


18
set_post_thumbnail_size( 80, 80, true ); // true for all post types

สมมติว่าฉันมีโพสต์สองประเภทที่เล่นในบล็อกของฉัน: โพสต์วิดีโอและผลิตภัณฑ์ ฉันอาจต้องการขนาดภาพ 80x80 สำหรับโพสต์ของฉัน แต่ 100x100 สำหรับวิดีโอของฉันและ 50x100 สำหรับผลิตภัณฑ์ของฉัน ตามความรู้ของฉันฉันถูกบังคับให้สร้างภาพขนาดย่อสำหรับภาพโพสต์ในขนาด 100x100 และ 50x100 และสำหรับผลิตภัณฑ์ของฉันฉันถูกบังคับให้สร้างภาพขนาดย่อที่ 80x80 และ 100x100 แม้ว่าฉันจะไม่ใช้มันเลย

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


ฉันพบความต้องการเดียวกันทั้งหมด
MikeSchinkel

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

ดูเหมือนว่าการกำกับดูแลที่ชัดเจนกับฉันนี้ยังไม่ได้รับการแก้ไขหรือไม่?
Nathan Hornby

คำตอบ:


12

ไม่มีวิธีในการกำหนดขนาดรูปภาพตามประเภทโพสต์เนื่องจากรูปภาพยังไม่ได้แนบกับโพสต์เมื่อคุณอัปโหลดและสร้างขนาดรูปภาพขั้นกลาง (เมื่อคุณเพิ่งเพิ่มลงใน "สื่อใหม่" พวกเขาไม่ได้แนบมาด้วย โพสต์ใด ๆ เลย)

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

ปลั๊กอินเหล่านี้ต้องเขียนใหม่ก่อนที่ฉันจะวางไว้ในไดเรกทอรีปลั๊กอิน WordPress แต่ควรปลอดภัย หรืออย่างน้อยก็มีTODOความคิดเห็นที่พวกเขาไม่ปลอดภัย


ดี!
MikeSchinkel

2

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


0

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

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.