Génère les méta-données des pièces jointes et crée des sous-formats pour les images.

Paramètres

$attachment_id

(int)(Obligatoire)Id de la pièce jointe à traiter.

$file

(chaîne de caractères)(Obligatoire)Chemin de fichier de l'image jointe.

Retourner

(mixte) Métadonnées pour la pièce jointe.

Plus d'informations

Cette fonction génère des métadonnées pour une pièce jointe d'image. Elle crée également une vignette et d'autres tailles intermédiaires de la pièce jointe de l'image en se basant sur les tailles définies sur l'onglet Paramètres_Écran_média.

Paramètre $file est l'emplacement du fichier sur le serveur. Utilisez le chemin absolu et non l'URI du fichier. Le fichier DOIT se trouver dans le répertoire des téléchargements. Voir wp_upload_dir().

Cette fonction renvoie un tableau de métadonnées de pièces jointes dans le format requis par wp_update_attachment_metadata(). Les éléments retournés dans le tableau sont :

["width"]
(chaîne de caractères) Taille horizontale de l'image jointe, en pixels.
["height"]
(chaîne de caractères) Taille verticale de la pièce jointe de l'image, en pixels.
["file"]
(chaîne de caractères) Chemin d'accès à la pièce jointe de l'image, relatif au répertoire de téléchargement actuellement configuré.
["hwstring_small"]
(chaîne de caractères) Chaîne de hauteur/largeur pour la balise HTML img utilisée pour afficher la petite taille de cette image.
Par exemple : height='96' width='126'
["sizes"]["thumbnail"]["file"]
(chaîne de caractères) Nom de fichier de la copie de la taille d'une vignette de l'image jointe.
["sizes"]["thumbnail"]["width"]
(chaîne de caractères) Taille horizontale de la copie de taille vignette de l'image jointe, en pixels.
["sizes"]["thumbnail"]["height"]
(chaîne de caractères) Taille verticale de la copie de la taille d'une vignette de l'image jointe, en pixels.
["sizes"]["medium"]
(tableau) Les trois mêmes éléments que ["sizes"]["thumbnail"] mais pour une copie de taille moyenne de l'image jointe.
["sizes"]["large"]
(tableau) Les trois mêmes éléments que ["sizes"]["thumbnail"] mais pour la copie de grande taille de l'image jointe.
["sizes"]["post-thumbnail"]
(tableau) Les trois mêmes éléments que ["sizes"]["thumbnail"] mais pour le post copie de la taille d'une vignette de l'image jointe.
["sizes"]["large-feature"]
(tableau) Les trois mêmes éléments que ["sizes"]["thumbnail"] mais pour la copie de la pièce jointe de l'image de grande taille.
["sizes"]["small-feature"]
(tableau) Les trois mêmes éléments que ["sizes"]["thumbnail"] mais pour la copie de taille réduite de l'image jointe.
["image_meta"]
(tableau) Métadonnées de la pièce jointe de l'image renvoyées par wp_read_image_metadata()

Cette fonction peut être utilisée pour régénérer les vignettes et les tailles intermédiaires de l'image après que des modifications ont été apportées sur le site de la Paramètres_Écran_média mais elle ne vérifie ni ne supprime les tailles intermédiaires qu'elle a précédemment créées pour la même image.

Vignettes et tailles intermédiaires de l'image, et [“sizes”] éléments du tableau renvoyé par cette fonction, ne sont générés que lorsque la taille intermédiaire est inférieure à la taille de l'image.

Cette fonction doit être utilisée en conjonction avec wp_update_attachment_metadata().

Si cette fonction n'est pas définie dans l'environnement où elle doit être utilisée, par exemple dans un Shortcode, utilisez la fonction include :

if(!function_exists('wp_crop_image')){include(ABSPATH.'wp-admin/includes/image.php');}

Source

Fichier : wp-admin/includes/image.php

functionwp_generate_attachment_metadata($attachment_id,$file){$attachment=get_post($attachment_id);$metadata=array();$support=false;$mime_type=get_post_mime_type($attachment);if(preg_match('!^image/!',$mime_type)&&file_is_displayable_image($file)){// Make thumbnails and other intermediate sizes.$metadata=wp_create_image_subsizes($file,$attachment_id);}elseif(wp_attachment_is('video',$attachment)){$metadata=wp_read_video_metadata($file);$support=current_theme_supports('post-thumbnails','attachment:video')||post_type_supports('attachment:video','thumbnail');}elseif(wp_attachment_is('audio',$attachment)){$metadata=wp_read_audio_metadata($file);$support=current_theme_supports('post-thumbnails','attachment:audio')||post_type_supports('attachment:audio','thumbnail');}if($support&&!empty($metadata['image']['data'])){// Check for existing cover.$hash=md5($metadata['image']['data']);$posts=get_posts(array('fields'=>'ids','post_type'=>'attachment','post_mime_type'=>$metadata['image']['mime'],'post_status'=>'inherit','posts_per_page'=>1,'meta_key'=>'_cover_hash','meta_value'=>$hash,));$exists=reset($posts);if(!empty($exists)){update_post_meta($attachment_id,'_thumbnail_id',$exists);}else{$ext='.jpg';switch($metadata['image']['mime']){case'image/gif':$ext='.gif';break;case'image/png':$ext='.png';break;}$basename=str_replace('.','-',wp_basename($file)).'-image'.$ext;$uploaded=wp_upload_bits($basename,'',$metadata['image']['data']);if(false===$uploaded['error']){$image_attachment=array('post_mime_type'=>$metadata['image']['mime'],'post_type'=>'attachment','post_content'=>'',);/**
				 * Filters the parameters for the attachment thumbnail creation.
				 *
				 * @since 3.9.0
				 *
				 * @param array $image_attachment An array of parameters to create the thumbnail.
				 * @param array $metadata         Current attachment metadata.
				 * @param array $uploaded         {
				 *     Information about the newly-uploaded file.
				 *
				 *     @type string $file  Filename of the newly-uploaded file.
				 *     @type string $url   URL of the uploaded file.
				 *     @type string $type  File type.
				 * }
				 */$image_attachment=apply_filters('attachment_thumbnail_args',$image_attachment,$metadata,$uploaded);$sub_attachment_id=wp_insert_attachment($image_attachment,$uploaded['file']);add_post_meta($sub_attachment_id,'_cover_hash',$hash);$attach_data=wp_generate_attachment_metadata($sub_attachment_id,$uploaded['file']);wp_update_attachment_metadata($sub_attachment_id,$attach_data);update_post_meta($attachment_id,'_thumbnail_id',$sub_attachment_id);}}}elseif('application/pdf'===$mime_type){// Try to create image thumbnails for PDFs.$fallback_sizes=array('thumbnail','medium','large',);/**
		 * Filters the image sizes generated for non-image mime types.
		 *
		 * @since 4.7.0
		 *
		 * @param string[] $fallback_sizes An array of image size names.
		 * @param array    $metadata       Current attachment metadata.
		 */$fallback_sizes=apply_filters('fallback_intermediate_image_sizes',$fallback_sizes,$metadata);$registered_sizes=wp_get_registered_image_subsizes();$merged_sizes=array_intersect_key($registered_sizes,array_flip($fallback_sizes));// Force thumbnails to be soft crops.if(isset($merged_sizes['thumbnail'])&&is_array($merged_sizes['thumbnail'])){$merged_sizes['thumbnail']['crop']=false;}// Only load PDFs in an image editor if we're processing sizes.if(!empty($merged_sizes)){$editor=wp_get_image_editor($file);if(!is_wp_error($editor)){// No support for this type of file./*
				 * PDFs may have the same file filename as JPEGs.
				 * Ensure the PDF preview image does not overwrite any JPEG images that already exist.
				 */$dirname=dirname($file).'/';$ext='.'.pathinfo($file,PATHINFO_EXTENSION);$preview_file=$dirname.wp_unique_filename($dirname,wp_basename($file,$ext).'-pdf.jpg');$uploaded=$editor->save($preview_file,'image/jpeg');unset($editor);// Resize based on the full size image, rather than the source.if(!is_wp_error($uploaded)){$image_file=$uploaded['path'];unset($uploaded['path']);$metadata['sizes']=array('full'=>$uploaded,);// Save the meta data before any image post-processing errors could happen.wp_update_attachment_metadata($attachment_id,$metadata);// Create sub-sizes saving the image meta after each.$metadata=_wp_make_subsizes($merged_sizes,$image_file,$metadata,$attachment_id);}}}}// Remove the blob of binary data from the array.if($metadata){unset($metadata['image']['data']);}/**
	 * Filters the generated attachment meta data.
	 *
	 * @since 2.1.0
	 * @since 5.3.0 The `$context` parameter was added.
	 *
	 * @param array  $metadata      An array of attachment meta data.
	 * @param int    $attachment_id Current attachment ID.
	 * @param string $context       Additional context. Can be 'create' when metadata was initially created for new attachment
	 *                              or 'update' when the metadata was updated.
	 */returnapply_filters('wp_generate_attachment_metadata',$metadata,$attachment_id,'create');}

Related

Utilise

Utilisations Description
wp-includes/media.php : wp_get_registered_image_subsizes()

Renvoie une liste normalisée de toutes les sous tailles d'images actuellement enregistrées.

wp-admin/includes/image.php : wp_create_image_subsizes()

Crée des sous-dimensions d'image, ajoute les nouvelles données aux méta de l'image. sizes array, et met à jour les métadonnées de l'image.

wp-admin/includes/image.php : _wp_make_subsizes()

Fonction de bas niveau pour créer des sous tailles d'images.

wp-admin/includes/image.php : fallback_intermediate_image_sizes

Filtre les tailles d'image générées pour les types mime non image.

wp-includes/post.php : wp_attachment_is()

Vérifie qu'une pièce jointe est d'un type donné.

wp-admin/includes/image.php : file_is_displayable_image()

Valider que le fichier est adapté à l'affichage au sein d'une page web.

wp-admin/includes/image.php : wp_generate_attachment_metadata()

Génère les méta-données des pièces jointes et crée les sous-formats des images.

wp-admin/includes/image.php : attachment_thumbnail_args

Filtre les paramètres pour la création de la vignette de l'attachement.

wp-admin/includes/image.php : wp_generate_attachment_metadata

Filtre les métadonnées des pièces jointes générées.

wp-admin/includes/media.php : wp_read_video_metadata()

Récupérer les métadonnées des balises ID3 d'un fichier vidéo.

wp-admin/includes/media.php : wp_read_audio_metadata()

Récupère les métadonnées des balises ID3 d'un fichier audio.

wp-includes/theme.php : current_theme_supports()

Vérifie le support d'un thème pour une fonctionnalité donnée.

wp-includes/formatting.php : wp_basename()

Version compatible i18n de basename()

wp-includes/functions.php : wp_upload_bits()

Crée un fichier dans le dossier de téléchargement avec le contenu donné.

wp-includes/functions.php : wp_unique_filename()

Obtenir un nom de fichier qui est sanitizé et unique pour le répertoire donné.

wp-includes/plugin.php : apply_filters()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet de filtre.

wp-includes/media.php : wp_get_image_editor()

Renvoie une instance de WP_Image_Editor et charge le fichier dans celle-ci.

wp-includes/post.php : wp_update_attachment_metadata()

Met à jour les métadonnées d'une pièce jointe.

wp-includes/post.php : wp_insert_attachment()

Insertion d'une pièce jointe.

wp-includes/post.php : post_type_supports()

Vérifie le support d'un type de post pour une fonctionnalité donnée.

wp-includes/post.php : get_posts()

Récupère un tableau des derniers posts, ou des posts correspondant aux critères donnés.

wp-includes/post.php : update_post_meta()

Met à jour un champ méta de post en fonction de l'ID de post donné.

wp-includes/post.php : add_post_meta()

Ajoute un champ méta au post donné.

wp-includes/post.php : get_post()

Récupère les données du post étant donné un ID de post ou un objet post.

wp-includes/post.php : get_post_mime_type()

Récupère le type mime d'une pièce jointe en fonction de l'identifiant.

wp-includes/load.php : is_wp_error()

Vérifie si la variable donnée est une erreur WordPress.

Utilisé par

Utilisé par Description
wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php : WP_REST_Attachments_Controller::edit_media_item()

Applique les modifications à un élément multimédia et crée un nouvel enregistrement de pièce jointe.

wp-includes/class-wp-customize-manager.php : WP_Customize_Manager::import_theme_starter_content()

Importe le contenu du démarreur de thème dans l'état personnalisé.

wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php : WP_REST_Attachments_Controller::create_item()

Crée une pièce jointe unique.

wp-admin/includes/class-wp-site-icon.php : WP_Site_Icon::insert_attachment()

Insère une pièce jointe.

wp-admin/includes/ajax-actions.php : wp_ajax_crop_image()

Gestionnaire Ajax pour le recadrage d'une image.

wp-admin/includes/image.php : wp_generate_attachment_metadata()

Génère les méta-données des pièces jointes et crée les sous-formats des images.

wp-admin/includes/media.php : media_handle_upload()

Enregistre un fichier soumis depuis une requête POST et crée un post de pièce jointe pour celui-ci.

wp-admin/includes/media.php : media_handle_sideload()

Traite un fichier chargé latéralement de la même manière qu'un fichier téléchargé est traité par media_handle_upload().

wp-admin/includes/class-custom-image-header.php : Custom_Image_Header::insert_attachment()

Insère une pièce jointe et ses métadonnées.

wp-admin/includes/class-custom-image-header.php : Custom_Image_Header::step_2()

Affiche la deuxième étape de la page d'image d'en-tête personnalisée.

wp-admin/includes/class-custom-background.php : Custom_Background::handle_upload()

Gère un téléchargement d'image pour l'image d'arrière-plan.

wp-includes/media.php : wp_maybe_generate_attachment_metadata()

Maybe tente de générer les métadonnées des pièces jointes, si elles sont manquantes.

wp-includes/class-wp-xmlrpc-server.php : wp_xmlrpc_server::mw_newMediaObject()

Télécharge un fichier, en suivant vos paramètres.

Changelog

Version Description
2.1.0 Introduit.