jacodelucia
4/12/2016 - 2:36 PM

WP - renommer images uploadées en fonction du nombre de posts (A-0001)

WP - renommer images uploadées en fonction du nombre de posts (A-0001)

<?php

function get_leading_zero_int($num){
	if($num < 10){
	    $prefix = '000';
    } elseif($num < 100){
		$prefix = '00';
	} elseif($num < 1000){
		$prefix = '0';
	} else {
		$prefix = '';
	}
	
	return $prefix;
}

add_filter('sanitize_file_name', 'extended_sanitize_file_name' );

function extended_sanitize_file_name( $filename ) {
	global $letters;
	$sanitized_filename = remove_accents( $filename );
	if( isset($_POST['upload_image']) && !empty($_POST['upload_image']) && isset($_POST['lettre']) ){
		// Récupération du nombre de post pour chaque lettre
		$args = array(
			'post_type' => 'galerie',
			'posts_per_page' => -1
		);
		$query_galerie = new WP_Query( $args );
		
		foreach($letters as $letter){
			$galerie_posts[strtoupper($letter['letter'])] = array();
		}
		
		while ( $query_galerie->have_posts() ) {
			$query_galerie->the_post();
			$lettre = strtoupper(get_field('lettre'));
			$galerie_posts[$lettre][] = get_the_ID();
		}
		wp_reset_postdata();
		
		// Définition du nom du fichier
		$info = pathinfo( $filename );
	    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
	    $lettre = strtoupper($_POST['lettre']);
	    $countLetters = count($galerie_posts[$lettre]) + 1;
	    
		return $lettre.'-'.get_leading_zero_int($countLetters).$countLetters.$ext;
	}
	return ConvertIntoFilename($sanitized_filename);
}