替换原始图像、WP图像编辑器

时间:2017-08-14 作者:Advanced SEO

默认情况下,如果使用内置图像编辑器编辑图像,而不是创建新图像,WordPress不会覆盖现有图像。

例如图像文件:图像文件名。jpg被编辑(例如简单裁剪/调整大小),新文件在磁盘上创建,文件名末尾有一些随机字符,如image-file-name-655f4dgfd4g4f。jpg公司

新映像将在post中使用,但旧文件将保留在磁盘上,但根本不使用。我看不到删除旧文件的选项,甚至无法列出/查看它。只能从FTP中删除旧图像。

是否有任何函数(针对functions.php)会告诉WP用已编辑的图像替换原始图像(或在编辑后删除原始图像)。

1 个回复
SO网友:Taku Yoshi

你想要的可能是这样的。

您需要手动取消链接原始图像,包括添加的大小。

WP图像编辑器会自动使用您提到的新名称创建一个新图像,但不会使用其他通过add_image_size() 作用

regenerate_added_sizes() 在下面的代码中,它正是这样做的:

function replace_original_images( $override, $filename, $image, $mime_type, $post_id ) {
    if ( \'image/jpeg\' !== $mime_type && \'image/png\' !== $mime_type ) {
        return $override;
    }
    $image_meta = wp_get_attachment_metadata( $post_id );
    $upload_dir = wp_upload_dir();

    $original_file_path = path_join( $upload_dir[\'basedir\'], $image_meta[\'file\'] );

    // \'full dir\' includes year and mouth location
    $upload_full_dir = str_replace( basename( $original_file_path ), \'\', $original_file_path );

    // delete original image
    unlink( $original_file_path );

    // delete other sizes
    foreach ( $image_meta[\'sizes\'] as $size ) {
        unlink( $upload_full_dir . $size[\'file\'] );
    }
    // regenerate added sizes
    function regenerate_added_sizes( $meta_id, $object_id, $meta_key ) {
        if ( \'_wp_attachment_metadata\' !== $meta_key ) {
            return;
        }
        $image_meta = wp_get_attachment_metadata( $object_id );
        $upload_dir = wp_upload_dir();

        $new_file_path = path_join( $upload_dir[\'basedir\'], $image_meta[\'file\'] );

        // prevent infinite loops
        remove_action( \'updated_post_meta\', \'regenerate_added_sizes\' );

        update_post_meta( $object_id, $meta_key, wp_generate_attachment_metadata( $object_id, $new_file_path ) );
    }
    add_action( \'updated_post_meta\', \'regenerate_added_sizes\', 10, 3 );

    return $override;
}
add_filter( \'wp_save_image_editor_file\', \'replace_original_images\', 10, 5 );

结束

相关推荐

Featured images get shrunken

上传特色图片时,我遇到的问题是,所有图片都会自动缩小。我想保留原始图像。检查this example. 所有员工的图片都会自动缩小,但在特色图片中,我上传了员工的完整图片。我认为图像太大,wordpress会自动缩小图像,因此,我在媒体库中缩放并裁剪了图像。一些图像已修复,但一些图像仍然存在问题。有没有一种方法可以让原始上传的图像按原样显示?