Je souhaite obtenir le nom de fichier complet local d'une image téléchargée afin de pouvoir le copier dans un nouveau répertoire et le traiter avec mes propres scripts de traitement d'image. Quels crochets/actions dois-je examiner pour atteindre cet objectif?
Merci
Le hook handle_upload
est appelé après l'exécution de wp_handle_upload et envoie un tableau nommé composé de 'fichier', 'url' & 'type'. Vous pouvez éventuellement utiliser un code comme celui-ci pour l'utiliser, en fonction de vos objectifs:
function process_images($results) {
if( $results['type'] === 'image/jpeg' ) { // or /png or /tif / /whatever
$filename = $results[ 'file' ];
$url = $results[ 'url' ];
// manipulate the image
}
}
add_action('wp_handle_upload', 'process_images');
Modifier: si vous avez également besoin de l'ID de pièce jointe, il serait peut-être préférable de vous connecter à un niveau supérieur, tel que l'ajout/la modification d'une pièce jointe:
add_action('add_attachment', 'process_images');
add_action('edit_attachment', 'process_images');
dans ce cas, la variable envoyée est l'attribut attachment_id, à partir duquel vous pouvez déduire le reste en utilisant quelque chose comme:
$metadata = wp_get_attachment_metadata( $results );
Si vous voulez le nom de fichier, et pas seulement le chemin relatif à la racine du fichier, vous devez ajouter cette ligne de code:
$filename = substr($results['file'], ( strrpos($results['file'], '/', -1) + 1 ) ); //add +1 to remove the slash at the beginning
EDIT: Juste après la publication de cette solution strrpos()
, j’en ai trouvé un meilleur:
$filename = basename($results['url']);