Cuối cùng tôi cũng có !! có được điều này tôi đã thử khoảng 12 lần để thực hiện và 12 cách khác nhau, nhưng cuối cùng nó cũng hoạt động, ... sắp xếp.
Tôi đã tạo một metabox tùy chỉnh để tải lên và đính kèm hình ảnh vào bài đăng và nó không yêu cầu bạn sử dụng trình tải lên phương tiện truyền thông hộp dày khủng khiếp được tích hợp trong WP. Tôi ghét điều đó. Không, những gì tôi đã làm chỉ là một nhóm đầu vào (tiêu đề, mô tả, tệp), mà bạn cũng có thể sao chép, để thêm các tệp đính kèm bổ sung nếu bạn muốn. Vì vậy, bạn điền vào các trường, chọn một hình ảnh để tải lên và lưu bản nháp hoặc xuất bản bài đăng. Khi có tệp đính kèm được thêm vào bài đăng, metabox sẽ hiển thị các trường đầu vào, cùng với hình ảnh xem trước của hình ảnh đính kèm cho mỗi tệp đính kèm bạn đã thêm. Các trường tiêu đề và mô tả được sử dụng để tạo dữ liệu meta tệp, không có gì được lưu dưới dạng post_meta, mà tôi biết. Đó là tất cả những gì tôi đã làm việc cho đến nay.
Tôi cần làm cho nó để khi bạn lưu / xuất bản một bài đăng, tải lên / tạo các tệp đính kèm, nó sẽ tạo ra ba kích thước hình ảnh như trình tải lên wp mặc định sẽ, hình thu nhỏ, trung bình, lớn và giữ hình ảnh kích thước đầy đủ . Nếu điều đó có thể bằng cách nào đó. Nếu không, tôi muốn sử dụng add_image_size()
để tạo / xác định kích thước tùy chỉnh mới và thay vào đó, hãy tạo chúng theo cách đó, khi tải lên.
Tôi không chắc chức năng nào là lý tưởng nhất để sử dụng trong trường hợp này, có thể image_make_intermediate_size()
chức năng sẽ tốt hơn, wp_create_thumbnail()
hoặc wp_crop_image()
... ai biết !!
Tôi không thể tìm ra cách thực hiện điều đó, nếu tôi cần chạy wp_handle_upload()
chức năng cho từng người, hoặc có thể một cái gì đó liên quan đến wp_generate_attachment_metadata()
chức năng. Thật khó hiểu với tôi vì 3 kích thước hình ảnh được liên kết thành các biến thể của cùng một tệp đính kèm và cách thực hiện điều đó.
Tôi đã lướt web, đọc nguồn của mọi tệp liên quan đến phương tiện / tải lên / hình ảnh wp và chỉ chơi với mọi chức năng dành cho công cụ tải lên phương tiện và không thể tìm thấy cách WP tạo 3 kích thước hình ảnh ở bất cứ đâu hoặc làm như thế nào Bản thân mình.
Trong wp-gộp / media.php, image_resize()
chức năng có vẻ như sẽ tốt nhất vì nó chính xác là như vậy. Tôi chỉ không thể tìm ra cuộc sống của tôi những gì tôi đang thiếu hoặc đã cố gắng làm nhưng đã làm sai để tạo hình thu nhỏ.
Đây là chức năng làm việc của tôi để thực hiện wp_handle_upload()
công cụ và mọi thứ, nhưng nó cũng cần tạo ngón tay cái 100px và tạo một phiên bản thay đổi kích thước của hình ảnh có chiều rộng tối đa như 500px và được lưu dưới dạng tệp mới của tệp được tải lên.
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'] );
}
}
Bất cứ ai cũng có thể giúp tôi cuối cùng sửa nó để nó hoạt động tốt sẽ được yêu thích. Tôi đã dành quá nhiều thời gian vô lý vô số lần khác nhau để cố gắng phát triển thứ này và tài liệu thật tệ, và thực sự không có bài viết hay nào ở bất cứ đâu về cách thực hiện.
Cảm ơn