Akhirnya aku !! mendapatkan hal ini Saya sudah mencoba sekitar 12 kali untuk membuat dan 12 cara yang berbeda, tetapi akhirnya berhasil, ... semacam.
Saya membuat metabox khusus untuk mengunggah dan melampirkan gambar ke posting, dan itu tidak mengharuskan Anda untuk menggunakan pengunggah media kotak tebal yang mengerikan yang dibangun ke dalam WP. Aku benci benda itu. Tidak, apa yang saya lakukan hanyalah sekelompok input (judul, deskripsi, file), yang juga dapat Anda tiru, untuk menambahkan lampiran tambahan jika Anda mau. Jadi, Anda mengisi kolom, pilih gambar untuk diunggah, dan menyimpan konsep atau menerbitkan posting. Setelah ada lampiran yang ditambahkan ke posting, metabox akan menampilkan bidang input, bersama dengan gambar pratinjau dari gambar terlampir untuk setiap lampiran yang Anda tambahkan. Bidang judul dan deskripsi digunakan untuk menghasilkan data meta file, tidak ada yang disimpan sebagai post_meta, yang saya tahu. Itulah semua yang saya dapatkan sejauh ini.
Saya perlu membuatnya sehingga ketika Anda menyimpan / mempublikasikan posting, mengunggah upload / membuat file lampiran, itu akan membuat tiga ukuran gambar seperti pengunggah wp default, thumbnail, menengah, besar, dan menjaga gambar ukuran penuh juga . Jika itu mungkin, entah bagaimana. Jika tidak, saya ingin menggunakannya add_image_size()
untuk membuat / menentukan ukuran khusus baru, dan menghasilkannya seperti itu, setelah mengunggah.
Saya tidak yakin fungsi mana yang paling ideal untuk digunakan dalam kasus ini, mungkin image_make_intermediate_size()
fungsinya akan lebih baik, atau wp_create_thumbnail()
atau wp_crop_image()
... siapa tahu !!
Saya tidak tahu bagaimana cara melakukan itu, jika saya perlu menjalankan wp_handle_upload()
fungsi untuk masing-masing, atau mungkin sesuatu yang melibatkan wp_generate_attachment_metadata()
fungsi. Ini membingungkan saya karena 3 ukuran gambar harus dikaitkan sebagai varian dari lampiran yang sama, dan bagaimana cara melakukannya.
Saya telah menjelajahi web, membaca sumber dari setiap media terkait file / upload / gambar wp, dan bermain dengan hampir setiap fungsi yang ada untuk hal-hal upload media dan tidak dapat menemukan bagaimana WP menciptakan 3 ukuran gambar di mana saja, atau bagaimana melakukan ini diriku.
Di wp-include / media.php image_resize()
fungsinya terlihat seperti yang terbaik karena memang seharusnya demikian. Saya hanya tidak tahu apa yang saya lewatkan atau coba lakukan untuk kehidupan saya, tetapi salah membuat gambar mini.
Inilah fungsi kerja saya yang melakukan wp_handle_upload()
hal - hal dan hal-hal, tetapi juga perlu membuat jempol 100px, dan membuat versi ukuran gambar yang maks-lebar seperti 500px, dan disimpan sebagai file baru dari yang diunggah.
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'] );
}
}
Siapa pun yang dapat membantu saya akhirnya memperbaiki ini sehingga berfungsi dengan baik akan dicintai. Saya telah menghabiskan begitu banyak waktu yang tak terhitung jumlahnya dan berulang kali mencoba untuk mengembangkan hal ini dan dokumentasinya payah, dan tidak ada posting yang bagus di mana pun tentang bagaimana melakukannya.
Terima kasih
sumber
Jawaban:
Hai @jaredwilli:
Kawan! Upaya berani, dan kerja bagus. Secara keseluruhan itu bisa menjadi tambahan yang bagus untuk WordPress.
Anda sangat dekat, tetapi Anda memiliki sekitar 5 dan 10 asumsi atau kode gagal yang tampaknya Anda memulainya tetapi tidak kembali ke sana karena tidak berfungsi. Saya ulang fungsi Anda hanya sebanyak yang saya butuhkan untuk memperbaikinya. Solusinya berikut, dan saya akan meninggalkan perbandingan berdampingan dengan Anda atau seseorang yang kurang kelelahan. :)
Hei, mengapa tidak berbelanja secara Royal dan dapatkan sendiri salinan PhpStorm ? Anda bisa dengan mudah menyelesaikan ini sendiri, Anda sangat dekat, jika Anda bisa menelusuri kode seperti sekarang saya bisa. Jika ya, jangan buang waktu Anda di XDEBUG yang sangat bermasalah dan unduh Zend Debugger .
PS Ini adalah jawaban saya sebelumnya. Saya memposting ini sebelum saya menyadari apa yang sebenarnya ditanyakan Jared. Itu benar, tetapi tidak terkait dengan pertanyaannya. :)
Saya pikir yang Anda cari adalah
add_image_size()
:Sebagai contoh:
Dengan mengatur WordPress ini akan membuat ukuran-ukuran itu secara otomatis. Apa itu yang kau butuhkan?
sumber
wp_generate_attachment_metadata()
melakukan itu jikaadd_image_size()
diatur. Mungkin dia tidak mencoba menggunakanadd_image_size()
untuk mengatur ukuran gambar?jika saya mengerti pertanyaan Anda, Anda perlu mendapatkan daftar ukuran pertama seperti ini:
ini mengembalikan sebuah array dari semua ukuran gambar yang terdaftar (default: besar, sedang, thumbnail, ukuran khusus apa pun yang terdaftar menggunakan "add_image_size ()" maka yang harus Anda lakukan adalah mengulang melalui masing-masing ukuran dan membuat gambar untuk ukuran seperti ini:
ganti $ file dengan path file yang diunggah dan $ crop dengan true atau false jika Anda ingin memotong gambar ke dimensi baru atau false untuk mengubah ukuran.
sumber
wp_generate_attachment_metadata()
di/wp-admin/includes/image.php
Anda akan melihatnya melakukan persis apa yang Anda diposting di atas, dan dia sudah memanggil itu. Jadi jika itu tidak sedang dibuat maka mungkin dia punya plugin yang menyaringnya menggunakan'intermediate_image_sizes_advanced'
hook?