Nếu bạn đang nói về câu trả lời tôi đã đăng ở đây,
nó chỉ đơn giản là tải lên tệp trong iframe để đạt được "Ajax like".
Bây giờ nếu bạn đã có một biểu mẫu xử lý việc gửi bài, bạn chỉ cần thêm đầu vào trường tệp tải lên ở đâu đó trong biểu mẫu của bạn:
<form ...
...
<input type="file" name="thumbnail" id="thumbnail">
...
...
</form>
hãy chắc chắn rằng hình thức của bạn có enctype="multipart/form-data"
thuộc tính.
sau đó trong tập lệnh xử lý biểu mẫu của bạn sau khi bạn tạo bài đăng (giả sử rằng bạn đang sử dụng wp_insert_post();
), hãy giữ ID bài đăng trong một var mới:
$new_post = wp_insert_post($post_array);
và sau đó thêm:
if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
return "upload error : " . $_FILES[$file]['error'];
}
$attach_id = media_handle_upload( $file, $new_post );
}
}
if ($attach_id > 0){
//and if you want to set that image as Post then use:
update_post_meta($new_post,'_thumbnail_id',$attach_id);
}
và hình ảnh của bạn sẽ được tải lên và lưu dưới dạng hình thu nhỏ của bài đăng.