ในที่สุดฉันก็มี !! ได้สิ่งนี้ฉันได้ลองทำประมาณ 12 ครั้งเพื่อทำและ 12 วิธีที่แตกต่างกัน แต่ในที่สุดก็สามารถใช้งานได้ ...
ฉันสร้างเมท็อกซ์ที่กำหนดเองสำหรับการอัปโหลดและแนบรูปภาพกับโพสต์และคุณไม่จำเป็นต้องใช้เครื่องมืออัพโหลดไฟล์มีเดียแบบหนาที่น่ากลัวในตัว WP ฉันเกลียดสิ่งนั้น ไม่สิ่งที่ฉันทำคือกลุ่มอินพุต (ชื่อคำอธิบายไฟล์) ซึ่งคุณสามารถทำซ้ำเพื่อเพิ่มสิ่งที่แนบเพิ่มเติมได้ถ้าต้องการ ดังนั้นคุณกรอกข้อมูลในฟิลด์เลือกภาพที่จะอัปโหลดและบันทึกร่างหรือเผยแพร่โพสต์ เมื่อมีสิ่งที่แนบเพิ่มลงในโพสต์ metabox จะแสดงช่องใส่พร้อมกับภาพตัวอย่างของภาพที่แนบมาสำหรับแต่ละสิ่งที่แนบมาที่คุณเพิ่ม ฟิลด์หัวเรื่องและคำอธิบายใช้เพื่อสร้างข้อมูลเมตาไฟล์ไม่มีอะไรถูกบันทึกเป็น post_meta ที่ฉันรู้ นั่นคือทั้งหมดที่ฉันได้ทำงานมาจนถึงตอนนี้
ฉันต้องทำให้มันเพื่อที่เมื่อคุณบันทึก / เผยแพร่โพสต์, inturn อัปโหลด / สร้างไฟล์แนบมันจะสร้างสามขนาดภาพตามที่ผู้อัปโหลด wp เริ่มต้นจะ, ภาพขนาดย่อ, ขนาดกลาง, ขนาดใหญ่และทำให้ภาพขนาดเต็มเกินไป . ถ้าเป็นไปได้ ถ้าไม่ฉันต้องการใช้เป็นอย่างอื่นadd_image_size()
ในการสร้าง / กำหนดขนาดที่กำหนดเองใหม่และสร้างมันขึ้นมาแทนเมื่อทำการอัปโหลด
ฉันไม่แน่ใจว่าฟังก์ชั่นใดเหมาะที่สุดที่จะใช้ในกรณีนี้image_make_intermediate_size()
ฟังก์ชั่นอาจจะดีกว่าหรือwp_create_thumbnail()
หรือwp_crop_image()
... ใครจะรู้ !!
ฉันไม่สามารถหาวิธีที่จะทำเช่นนั้นได้หากฉันต้องการเรียกใช้wp_handle_upload()
ฟังก์ชั่นสำหรับแต่ละคนหรืออาจจะเป็นสิ่งที่เกี่ยวข้องกับwp_generate_attachment_metadata()
ฟังก์ชั่น มันทำให้ฉันสับสนเนื่องจากขนาดรูปภาพ 3 รูปนั้นจะเชื่อมโยงกับชุดรูปแบบของสิ่งที่แนบมาเดียวกันและจะทำอย่างไรต่อไป
ฉันขัดจังหวะเว็บอ่านแหล่งที่มาของไฟล์ wp / อัพโหลด / รูปภาพที่เกี่ยวข้องทุกไฟล์และเล่นกับฟังก์ชั่นทุกอย่างที่มีสำหรับการอัปโหลดสื่อและไม่สามารถหาวิธีสร้าง WP ขนาดภาพ 3 ขนาดได้ทุกที่หรือวิธีการทำ มันเอง
ใน wp-include / media.php image_resize()
ฟังก์ชั่นดูเหมือนจะดีที่สุดเพราะมันเป็นสิ่งที่ควรจะเป็น ฉันไม่สามารถคิดออกเกี่ยวกับชีวิตของฉันในสิ่งที่นรกฉันหายไปหรือพยายามทำ แต่ทำผิดเพื่อให้รูปขนาดย่อของภาพ
นี่คือฟังก์ชั่นการทำงานของฉันที่ทำwp_handle_upload()
สิ่งต่าง ๆ แต่มันก็จำเป็นต้องสร้างนิ้วโป้งขนาด 100px และสร้างภาพที่ปรับขนาดได้ซึ่งมีขนาดความกว้างสูงสุดเช่น 500px และบันทึกเป็นไฟล์ใหม่ของไฟล์ที่อัปโหลด
function update_attachment(){
global $post;
wp_update_attachment_metadata( $post->ID, $_POST['a_image'] );
if( !empty( $_FILES['a_image']['name'] )) { //New upload
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$override['action'] = 'editpost';
$url = wp_handle_upload( $_FILES['a_image'], $override );
// $medium = image_make_intermediate_size( $uploaded_file['url'], 500, 400, true );
// $thumb = = image_make_intermediate_size( $uploaded_file['url'], 100, 100, true );
if ( isset( $file['error'] )) {
return new WP_Error( 'upload_error', $file['error'] );
}
$array_type = wp_check_filetype
$allowed_file_types = array('image/jpg','image/jpeg','image/gif','image/png');
$name_parts = pathinfo( $name );
$name = trim( substr( $name, 0, - ( 1 + strlen( $name_parts['extension'] )) ));
$type = $file['type'];
$file = $file['file'];
$title = $_POST['a_title'] ? $_POST['a_title'] : $name;
$content = $_POST['a_desc']
$post_id = $post->ID;
$attachment = array(
'post_title' => $title,
'post_type' => 'attachment',
'post_content' => $content,
'post_parent' => $post_id,
'post_mime_type' => $type,
'guid' => $url['url']
);
// Save the data
$id = wp_insert_attachment( $attachment, $_FILES['a_image'][ 'file' ]/*, $post_id - for post_thumbnails*/);
if ( !is_wp_error( $id )) {
$attach_meta = wp_generate_attachment_metadata( $id, $uploaded_file['url'] );
wp_update_attachment_metadata( $attach_id, $attach_meta );
}
update_post_meta( $post->ID, 'a_image', $uploaded_file['url'] );
}
}
ใครก็ตามที่สามารถช่วยฉันแก้ไขปัญหานี้ในที่สุด ฉันใช้เวลามากมายนับไม่ถ้วนในการพยายามพัฒนาสิ่งนี้และเอกสารประกอบมากมายและไม่มีโพสต์ใด ๆ ที่ดีเกี่ยวกับวิธีการทำ
ขอบคุณ