web-dev-qa-db-fra.com

Le téléchargement d'images sur le front-end ne génère pas de tailles de vignettes

J'utilise le code ci-dessous pour télécharger une vignette de publication via le frontal. Cependant, il ne semble que télécharger la taille d'origine et non toutes les différentes tailles de vignettes, par exemple. 'moyen', 'grand' etc. Je reçois _wp_attached_file et _thumbnail_id entrés dans la base de données sans problème, mais pas avec d'autres métadonnées de taille. L'image est ajoutée au dossier de téléchargement correct, mais uniquement la taille d'origine et non les tailles standard supplémentaires.

Merci d'avance.

$uploaddir = wp_upload_dir();
                  $file = $_FILES['featured' ];
                  $uploadfile = $uploaddir['path'] . '/' . basename( $file['name'] );
                  move_uploaded_file( $file['tmp_name'] , $uploadfile );
                  $filename = basename( $uploadfile );
                  $wp_filetype = wp_check_filetype(basename($filename), null );
                  $attachment = array(
                    'post_mime_type' => $wp_filetype['type'],
                    'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
                    'post_content' => '',
                    'post_status' => 'inherit',
                    'menu_order' => $_i + 1000
                    );
                  $attach_id = wp_insert_attachment( $attachment, $uploadfile );
                  $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
                  wp_update_attachment_metadata( $attach_id, $attach_data );


                  $post = array(
                      'ID'             => esc_sql($current_post)
                  );
                  wp_update_post($post);

                  update_post_meta($current_post,'_thumbnail_id',$attach_id);
                  set_post_thumbnail( $current_post, $attach_id );
1
The Sumo

wp_generate_attachment_metadata génère des métadonnées pour une pièce jointe d'image. Il crée également une miniature et d’autres tailles intermédiaires de la pièce jointe en fonction des tailles définies dans Settings_Media_Screen.

wp_generate_attachment_metadata () se trouve dans wp-admin/includes/image.php.

/ * nécessite juste image.php avant wp_generate_attachment_metadata * /

require_once (ABSPATH. 'wp-admin/includes/image.php');

$ attach_data = wp_generate_attachment_metadata ($ attach_id, $ file);

j'espère que cela pourra aider!

1
Aishan

Il semble que la seule façon de faire est d’utiliser media_handle_upload

0
The Sumo