Nihayet var !! Bu şeyi yapmak için yaklaşık 12 kez ve 12 farklı şekilde denedim, ama sonunda işe yaradı, ... biraz.
Yazılara resim yüklemek ve eklemek için özel bir meta kutu yaptım ve WP'de yerleşik olan korkunç kalın kutu medya yükleyiciyi kullanmanızı gerektirmiyor. O şeyden nefret ediyorum. Hayır, yaptığım sadece isterseniz ek ekler eklemek için çoğaltabileceğiniz bir grup girdi (başlık, açıklama, dosya). Böylece alanları doldurun, yüklenecek bir resim seçin ve taslağı kaydedin veya yayını yayınlayın. Bir gönderiye ek eklendikten sonra, meta kutu, eklediğiniz her ek için ekli görüntünün önizleme görüntüsüyle birlikte giriş alanlarını görüntüler. Başlık ve açıklama alanları meta verileri oluşturmak için kullanılır, hiçbir şey bildiğim post_meta olarak kaydedilmez. Şu anda şimdiye kadar çalıştığım şey bu.
Bir gönderiyi kaydettiğinizde / yayınladığınızda, eklenti dosyalarını yüklediğinizde / eklediğinizde, varsayılan wp yükleyicisinin küçük resim, orta, büyük ve tam boyutlu görüntüyü koruduğu gibi üç görüntü boyutu oluşturacağı şekilde yapmam gerekiyor . Bu bir şekilde mümkünse. Değilse, add_image_size()
yeni özel boyutlar oluşturmak / tanımlamak ve yükleme sırasında bunları bu şekilde oluşturmak için başka şekilde kullanmak istiyorum.
Bu durumda hangi işlevin kullanmak için en ideal olduğundan emin değilim, belki image_make_intermediate_size()
işlev daha iyi olurdu, ya wp_create_thumbnail()
da wp_crop_image()
... kim bilir!
wp_handle_upload()
Her biri için işlevi çalıştırmam gerekiyorsa , ya da belki de wp_generate_attachment_metadata()
işlevi içeren bir şey yapmak için bunu nasıl yapacağımı anlayamıyorum . 3 görüntü boyutu aynı ekin varyantları olarak ilişkilendirilecek ve bunu nasıl yapacağınız için kafa karıştırıcı.
Web'i inceledim, her wp medya / yükleme / görüntü ile ilgili dosyanın kaynağını okudum ve medya yükleme şeyler için hemen hemen her işlevle oynadım ve WP'nin 3 görüntü boyutunu her yerde nasıl oluşturduğunu veya nasıl yapılacağını bulamıyorum kendim.
Wp-include / media.php dosyasında image_resize()
tam olarak olması gerektiği için işlev en iyi gibi görünüyor. Sadece hayatım boyunca ne eksik ya da ne yapmayı denediğimi anlayamıyorum ama küçük resim yapmak için yanlış yaptım.
İşte wp_handle_upload()
işleri ve işleri yapan benim çalışma fonksiyonu , ama aynı zamanda 100px başparmak oluşturmak ve resmin 500px gibi maksimum genişlik ve yüklenen bir yeni dosyalar olarak kaydedilen bir yeniden boyutlandırma sürümü yapmak gerekir.
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'] );
}
}
Nihayet bu düzeltmek için bana yardım edebilen herkes düzgün çalışır sevilirdi. Bu şeyi geliştirmeye çalışırken çok sayıda saçma sayısız saat harcadım ve dokümantasyon berbat, ve bunun nasıl yapılacağı konusunda hiçbir iyi mesaj yok.
Teşekkürler