web-dev-qa-db-fra.com

Crochet pour obtenir le nom de fichier de l'image quand il est téléchargé

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

1
Tom

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 );
6
Simon Scarfe

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']);
0
anou