上载过程中重命名附件

时间:2013-03-31 作者:Daniela

下面是我为WP使用的函数,用于在动态上载期间重命名图像,并将图像的文件名设置为与post slug匹配。

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);
我想保留原始文件名添加$post\\u slug

[线程标题]-[原始文件名]。外景

1 个回复
SO网友:birgire

您可以尝试替换

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

$arr[\'name\'] = $post_slug . \'-\' . $arr[\'name\'];
获取文件格式[post_slug]-[original_filename].ext.

更新:

以下是$arr 具有文件名的图像的结构car.png :

 Array
(
    [name] => car.png
    [type] => image/png
    [tmp_name] => /tmp/phpJKhCwI
    [error] => 0
    [size] => 5868
)
获取[post_slug].ext 格式,可以使用此格式:

$arr[\'name\'] = $post_slug . \'.\' . pathinfo( $arr[\'name\'], PATHINFO_EXTENSION );
当帖子标题为My favorite car 它变成:

 Array
(
    [name] => my-favorite-car.png
    [type] => image/png
    [tmp_name] => /tmp/phpJKhCwI
    [error] => 0
    [size] => 5868
)
当使用相同的文件名上载多个图像时,上载的图像文件名将变为:

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

结束

相关推荐

Upload images - Theme options

我正在使用这个很棒的[图坦卡门+教程][1]创建主题选项页面。这对我来说很好,因为我需要通过css更改div的背景图像。它可以很好地与一个图像,但我不知道如何使它与2个图像?如果你能告诉我我做错了什么,那将是一个巨大的帮助?谢谢 <?php function wptuts_get_default_options() { $options = array(); $options[] = array(\'logo\' => \'\');