web-dev-qa-db-fra.com

Renommer les pièces jointes lors du téléchargement

Voici la fonction que j'utilise pour WP: renommer les images lors du téléchargement à la volée et définir le nom de fichier de l'image pour qu'il corresponde à celui de publication.

function wpsx_5505_modify_uploaded_file_names($arr) {

// Get the parent post ID, if there is one
if( isset($_REQUEST['post_id']) ) {
    $post_id = $_REQUEST['post_id'];
} else {
    $post_id = false;
}

// Only do this if we got the post ID--otherwise they're probably in
//  the media section rather than uploading an image from a post.
if($post_id && is_numeric($post_id)) {

    // Get the post slug
    $post_obj = get_post($post_id); 
    $post_slug = $post_obj->post_name;

    // If we found a slug
    if($post_slug) {

        $random_number = Rand(10000,99999);
        $arr['name'] = $post_slug . '-' . $random_number . '.jpg';

    }

}

return $arr;

}
add_filter('wp_handle_upload_prefilter', 'wpsx_5505_modify_uploaded_file_names', 1, 1);

Je veux conserver le nom de fichier d'origine en ajoutant $ post_slug

[thread_title] - [original_filename] .ext

2
Daniela

Vous pouvez essayer de remplacer

$arr['name'] = $post_slug . '-' . $random_number . '.jpg';

avec

$arr['name'] = $post_slug . '-' . $arr['name'];

pour obtenir le format de fichier [post_slug]-[original_filename].ext.

Mettre à jour:

Voici un exemple de structure $arr pour une image portant le nom de fichier car.png:

 Array
(
    [name] => car.png
    [type] => image/png
    [tmp_name] => /tmp/phpJKhCwI
    [error] => 0
    [size] => 5868
)

Pour obtenir le format [post_slug].ext, on pourrait utiliser ceci:

$arr['name'] = $post_slug . '.' . pathinfo( $arr['name'], PATHINFO_EXTENSION );

Lorsque le titre de l'article est My favorite car, il devient:

 Array
(
    [name] => my-favorite-car.png
    [type] => image/png
    [tmp_name] => /tmp/phpJKhCwI
    [error] => 0
    [size] => 5868
)

Lorsque plusieurs images sont téléchargées avec le même nom de fichier, le nom de fichier de l'image téléchargée devient:

my-favorite-car.png  (1. upload)
my-favorite-car1.png (2. upload)
my-favorite-car2.png (3. upload)
...
2
birgire