Nareszcie mam !! dostałem tę rzecz, którą próbowałem zrobić 12 razy i 12 różnych sposobów, ale w końcu udało mi się ...
Stworzyłem niestandardowy metaboks do przesyłania i dołączania zdjęć do postów i nie wymaga on używania okropnego programu do przesyłania multimediów typu „hardbox” wbudowanego w WP. Nienawidzę tego. Nie, to, co zrobiłem, to tylko grupa danych wejściowych (tytuł, opis, plik), które możesz również zduplikować, aby dodać dodatkowe załączniki, jeśli chcesz. Wypełniasz więc pola, wybierasz obraz do przesłania i zapisujesz wersję roboczą lub publikujesz post. Po dodaniu załączników do postu metabox wyświetli pola wprowadzania wraz z podglądem załączonego obrazu dla każdego dodanego załącznika. Pola tytułu i opisu służą do generowania metadanych pliku, nic nie jest zapisywane jako post_meta, o czym wiem. To wszystko, co do tej pory pracowałem.
Muszę to zrobić, aby po zapisaniu / opublikowaniu postu, ponownym przesłaniu / utworzeniu plików załączników utworzyłyby trzy rozmiary obrazów, tak jak domyślny program do przesyłania wp, miniatura, średni, duży i zachowując obraz w pełnym rozmiarze . Jeśli to w jakiś sposób możliwe. Jeśli nie, w innym przypadku chciałbym użyć add_image_size()
do utworzenia / zdefiniowania nowych niestandardowych rozmiarów i wygenerowania ich w ten sposób po przesłaniu.
Nie jestem pewien, która funkcja jest najbardziej idealna do użycia w tym przypadku, może ta image_make_intermediate_size()
funkcja byłaby lepsza, wp_create_thumbnail()
lub wp_crop_image()
... kto wie !!
Nie mogę wymyślić, jak to zrobić, jeśli muszę uruchomić wp_handle_upload()
funkcję dla każdego z nich, a może coś z tą wp_generate_attachment_metadata()
funkcją. Jest to dla mnie mylące, ponieważ 3 rozmiary obrazów należy powiązać jako warianty tego samego załącznika i jak to zrobić.
Przeszukałem sieć, przeczytałem źródło każdego pliku związanego z wp media / upload / image, i grałem z niemal każdą funkcją związaną z przesyłaniem multimediów i nie mogę znaleźć, w jaki sposób WP tworzy 3 rozmiary obrazów w dowolnym miejscu ani jak to zrobić ja sama.
W wp-obejmuje / media.php image_resize()
funkcja wygląda najlepiej, ponieważ jest dokładnie taka, jak powinna być. Po prostu nie mogę ustalić, na co mnie stać, do diabła, za czym tęsknię lub co próbowałem zrobić, ale zrobiłem źle, tworząc miniatury obrazów.
Oto moja funkcja robocza, która wykonuje te wp_handle_upload()
czynności, ale musi także utworzyć kciuk 100 pikseli i utworzyć wersję obrazu o maksymalnej szerokości, taką jak 500 pikseli, i zapisać jako nowe pliki przesłanego.
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'] );
}
}
Każdy, kto może mi pomóc w końcu to naprawić, aby działał prawidłowo, byłby zachwycony. Spędziłem wiele niedorzecznych niezliczonych godzin, wiele różnych razy, starając się to rozwinąć, a dokumentacja jest do kitu, a nigdzie nie ma naprawdę dobrych postów na ten temat.
Dzięki