使用文件名中的宽度重命名图像上载

时间:2013-01-18 作者:kaffolder

我正在尝试更改WordPress用于重命名上载文件的名称格式。例如,当我上载文件名为的图像时cat-picture.jpg WordPress将创建缩放版本,并将文件名重命名为cat-picture-{WIDTHxHEIGHT}.jpg. 是否有办法移动此宽度(&a);高度属性设置为文件名的开头,因此我得到的是{WIDTHxHEIGHT}-cat-picture.jpg? 因此,在本例的上下文中,我希望将文件名重命名为600x400-cat-picture.jpg. 有什么想法?

我已经看过了this postthis post, 但我无法想出一个有效的解决方案。这是我的代码:

add_filter( \'wp_handle_upload_prefilter\', \'modify_uploaded_file_names\', 20);
function modify_uploaded_file_names( $image ) {
    // Get default name of uploaded file and set to variable
    $imagename = $image[\'name\'];
    // Case switch for multiple file extensions
    switch ( $image[\'type\'] ) {
        case \'image/jpeg\' :
            $suffix = \'jpg\';
            break;
        case \'image/png\' :
            $suffix = \'png\';
            break;
        case \'image/gif\' :
            $suffix = \'gif\';
            break;
    }
    // Get size of uploaded image and assign to variable
    $imagesize = getimagesize($image);
    // Re-structure uploaded image name
    $image[\'name\'] = "{$imagesize[0]}x{$imagesize[1]}-{$imagename}.{$suffix}";

    return $image;
}

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

我设法用过滤器做到了image_make_intermediate_size.

可能所有的path/filename.extension 肢解和重做可以优化,也可以用一笔完成,但唉,我要告诉读者:

// The filter runs when resizing an image to make a thumbnail or intermediate size.
add_filter( \'image_make_intermediate_size\', \'rename_intermediates_wpse_82193\' );

function rename_intermediates_wpse_82193( $image ) 
{
    // Split the $image path into directory/extension/name
    $info = pathinfo($image);
    $dir = $info[\'dirname\'] . \'/\';
    $ext = \'.\' . $info[\'extension\'];
    $name = wp_basename( $image, "$ext" );

    // Build our new image name
    $name_prefix = substr( $name, 0, strrpos( $name, \'-\' ) );
    $size_extension = substr( $name, strrpos( $name, \'-\' ) + 1 );
    $new_name = $dir . $size_extension . \'-\' . $name_prefix . $ext;

    // Rename the intermediate size
    $did_it = rename( $image, $new_name );

    // Renaming successful, return new name
    if( $did_it )
        return $new_name;

    return $image;
}

结束

相关推荐

如何删除url中的index.php?

我已经在一个子目录中安装了wordpress(blog). 在根目录中,我安装了Magento。现在,文件目录如下所示:app downloader includes media .... blog/wp-admin 我的服务器是nginx. 当我在wordpress的永久链接设置中将URL设置为:http://www.example.com/blog/index.php/sample-post/ …所有帖子都可用。现在我要删除index.ph