删除自定义帖子类型的图像大小

时间:2014-01-28 作者:Howdy_McGee

我试图在不使用插件的情况下实现这一点,但是操作和过滤器

有没有办法删除WordPress根据自定义帖子类型生成的额外图像大小?我一直想和intermediate_image_sizes_advanced 过滤器,但它看起来没有访问权限$postpost_type. 所以我使用这样的函数:

function filter_image_sizes($sizes) {
    global $post;
    global $post_type;

    if($post->post_type == \'cpt_slides\' || $post_type == \'cpt_slides\'){
        unset( $sizes[\'thumbnail\']);
        unset($sizes[\'medium\']);
        unset( $sizes[\'large\']);
    }

    return $sizes;
}
add_filter(\'intermediate_image_sizes_advanced\', \'filter_image_sizes\');

The Reasoning / Situation

我创建了一个幻灯片自定义帖子类型(如图像滑块),它使用特色图像允许用户上传“幻灯片”。我也有一些自定义的图像大小,但其中一个是专门为幻灯片设计的。由于幻灯片图像将是一个静态大小,我不想让WordPress生成所有这些我永远不会使用的额外图像大小,因此这是一个问题。

3 个回复
最合适的回答,由SO网友:Ravinder Kumar 整理而成

可能这个过滤器应该工作intermediate_image_sizes

Note: 如果您正在从后期编辑屏幕上载图像,此解决方案将起作用。(使用WP-3.8.1在本地主机上测试)

add_filter( \'intermediate_image_sizes\', \'ravs_slider_image_sizes\', 999 );
function ravs_slider_image_sizes( $image_sizes ){

    // size for slider
    $slider_image_sizes = array( \'your_image_size_1\', \'your_image_size_2\' ); 

    // for ex: $slider_image_sizes = array( \'thumbnail\', \'medium\' );

    // instead of unset sizes, return your custom size for slider image
    if( isset($_REQUEST[\'post_id\']) && \'your_custom_post_type\' === get_post_type( $_REQUEST[\'post_id\'] ) )
        return $slider_image_sizes;

    return $image_sizes;
}

SO网友:Nullvariable

问题的一部分可能是,此过滤器最终可能会从多个位置调用,或者可能是从没有帖子与查询关联的位置调用。事实上,所使用的过滤器似乎只在附件作为元数据的一部分首次创建时使用。

做了一点测试后,我发现在上载图像时,$post和$post\\u类型的变量没有设置在使用此过滤器的位置。这可能是因为媒体上传是通过javascript作为后台进程完成的,而不是推送表单提交并重新加载页面。

WordPress并没有真正设置来处理这种过滤,这可能是将来更新时应该考虑的事情,我建议向WordPress Trac提交一张票据,并在那里获得一些建议。

WordPress基本上是独立于可能附加到的帖子来存储媒体元素,以便您可以在多个位置轻松使用同一文件。如果WordPress允许您在更细粒度的基础上调整生成的大小,那么最终可能会出现这样的情况:您上载了一个博客文章的图像,然后希望将该图像作为特色图像重用到其他地方。媒体库的设置是为了处理这类内容很好,但它的设置不是为了根据具体情况重新生成缩略图,而是为了生成所需的所有缩略图,因为您可以在其他地方使用任何或所有缩略图。

处理此问题的最简单方法是在上载媒体时,为自定义帖子类型的元盒使用自己的媒体上载功能。这将允许您绕过正常的WordPress缩略图过程,只创建上传文件时所需的大小。这里有一个很好的教程,可以帮助您完成这一过程:http://wp.tutsplus.com/tutorials/attaching-files-to-your-posts-using-wordpress-custom-meta-boxes-part-1/

SO网友:artist learning to code

也许您可以安装此插件:http://wordpress.org/plugins/simple-image-sizes/

此插件可以添加图像大小并覆盖主题的自定义大小。然后可以重新生成它们。

结束

相关推荐

如何使用图片上传的getimageSize()?

我需要通过media box检查要上载的图像的分辨率,然后将其上载到自定义目录。作为起点,我使用了How Can I Organize the Uploads Folder by Slug (or ID, or FileType, or Author)?其中一部分是这样的:function wpse_25894_custom_upload_dir($path) { $use_default_dir = ( isset($_REQUEST[\'post_id\'] )