Finalmente ho !! ho ottenuto questa cosa che ho provato circa 12 volte per fare e 12 modi diversi, ma alla fine l'ho fatto funzionare, ... in un certo senso.
Ho creato un metabox personalizzato per caricare e allegare immagini ai post e non è necessario utilizzare l'orribile uploader multimediale thickbox integrato in WP. Odio quella cosa. No, quello che ho fatto è solo un gruppo di input (titolo, descrizione, file), che puoi anche duplicare, per aggiungere ulteriori allegati se vuoi. Quindi compili i campi, selezioni un'immagine da caricare e salvi la bozza o pubblichi il post. Una volta aggiunti gli allegati a un post, metabox visualizzerà i campi di input, insieme a un'immagine di anteprima dell'immagine allegata per ogni allegato aggiunto. I campi del titolo e della descrizione vengono utilizzati per generare i metadati del file, nulla viene salvato come post_meta, di cui sono a conoscenza. Questo è attualmente tutto ciò che ho ottenuto lavorare finora.
Devo farlo in modo che quando salvi / pubblichi un post, intendi caricare / creare i file degli allegati, crei le tre dimensioni dell'immagine come farebbe l'uploader wp predefinito, miniatura, medio, grande e mantenendo anche l'immagine a dimensione intera . Se è possibile in qualche modo. In caso contrario, vorrei utilizzare altrimenti add_image_size()
per creare / definire nuove dimensioni personalizzate e generarle in questo modo, al momento del caricamento.
Non sono sicuro di quale sia la funzione più ideale da utilizzare in questo caso, forse la image_make_intermediate_size()
funzione sarebbe migliore o wp_create_thumbnail()
o wp_crop_image()
... chissà !!
Non riesco a capire come farlo, se devo eseguire la wp_handle_upload()
funzione per ognuno o forse qualcosa che coinvolge la wp_generate_attachment_metadata()
funzione. Mi confonde poiché le 3 dimensioni dell'immagine devono essere associate come varianti dello stesso allegato e come procedere.
Ho esplorato il Web, letto la fonte di ogni file relativo ai file multimediali di upload / upload / immagine e giocato con quasi tutte le funzioni disponibili per il caricamento dei file multimediali e non riesco a trovare il modo in cui WP crea le 3 dimensioni dell'immagine da nessuna parte, o come fare io stesso.
In wp-Includes / media.php la image_resize()
funzione sembra che sarebbe meglio poiché è esattamente quello che dovrebbe essere. Non riesco proprio a capire per me la vita cosa diavolo mi manca o ho provato a fare ma ho sbagliato a realizzare le miniature delle immagini.
Ecco la mia funzione di lavoro che fa wp_handle_upload()
cose e cose, ma ha anche bisogno di creare il pollice 100px e creare una versione ridimensionata dell'immagine della larghezza massima come 500px e salvata come nuovi file di quello caricato.
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'] );
}
}
Chiunque fosse in grado di aiutarmi a risolvere questo problema in modo che funzioni correttamente sarebbe amato. Ho trascorso così tante ore ridicole innumerevoli volte diverse nel tentativo di sviluppare questa cosa e la documentazione fa schifo, e non ci sono davvero buoni post da nessuna parte su come farlo.
Grazie