在我的主题中,有一组
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 470, 680 );
这实际上是在默认图像之外再生成一个图像
small,
medium,
medium-large,
large而且它是从作者设定的主题出发,当然是为了特定的目的。
我正在使用wp_insert_attachment() 用于从前端上载图像的默认功能。仅从这个特定的过程中,我不希望生成多个图像。Only the original image and the thumbnail image. 所以我做了一个简单的代码
function test_attachment( $user_data, $values, $user_id ) {
if( isset( $values[\'profile\'][\'user_avatar\'][\'path\'] ) ) {
$filename = $values[\'profile\'][\'user_avatar\'][\'path\'];
$filetype = wp_check_filetype( basename( $filename ), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
\'guid\' => $wp_upload_dir[\'url\'] . \'/\' . basename( $filename ),
\'post_mime_type\' => $filetype[\'type\'],
\'post_title\' => preg_replace( \'/\\.[^.]+$/\', \'\', basename( $filename ) ),
\'post_content\' => \'\',
\'post_status\' => \'inherit\'
);
$attach_id = wp_insert_attachment( $attachment, $filename );
require_once( ABSPATH . \'wp-admin/includes/image.php\' );
//remove all the generated images and just keep only the original and the thumbnail image.
add_filter(\'intermediate_image_sizes_advanced\', function($sizes) {
unset( $sizes[\'medium\']);
unset( $sizes[\'medium_large\']);
unset( $sizes[\'large\']);
return $sizes;
});
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
$previous_avatar_id = get_user_meta( $user_id, \'avatar_attachment_id\', true );
if( $previous_avatar_id ) {
wp_delete_attachment( $previous_avatar_id );
}
update_user_meta( $user_id, \'avatar_attachment_id\', $attach_id );
}
}
它工作得很好,并且实际上不稳定默认图像大小的生成与中间图像大小高级图像的生成,但是仍然会生成后期缩略图图像我一直在尝试取消设置后期缩略图的创建。我试图添加
unset( $sizes[\'post-thumbnail\']);
但运气不好。
如何才能停止从解析器内部生成后期缩略图图像,而不删除原始的set\\u post\\u thumbnail\\u size,因为它是为其他特定目的而设置的?
任何想法都将不胜感激。