如何禁用某些自定义帖子类型的默认图像尺寸的生成?


12

我使用了自定义帖子类型,其中不需要“缩略图”,“中”和“大”尺寸。我需要禁用此大小并创建功能或插件,在其中可以设置每种自定义帖子类型所需的图像大小。

我的第一步是从wp-includes / media.php挂钩get_intermediate_image_sizes函数。我已经将此代码添加到functions.php,但它不起作用:(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}   

UPD:正在media.php中编辑此行。更改后未生成的默认类型。

$image_sizes = array('thumbnail', 'medium', 'large');

但是,如何使我的工作钩上钩?


1
也想对此作出回应
urok93 2011年

2
那不是您使用该过滤器的方式。要清除默认大小,您只需要添加一个非常低的优先级并返回一个空数组即可。但这不能解决您的问题,因为那会影响所有帖子类型。我认为当前的WP版本中没有一种方法可以满足您的需求。尝试请求WP开发人员将$attachment_id参数添加到此函数内部的过滤器中。这样,您可以检查钩子内的帖子类型
onetrickpony

我的步骤只是实验,而不是完整的解决方案。我如何正确使用过滤器?附注:谢谢您的链接..
Bohdan Hdal 2011年

对WP的任何更改使现在成为可能?
Drivingralle

没有变化。还是一样的问题。
Bohdan Hdal '16

Answers:


7

我认为您目前唯一的解决方案是禁用所有中间图像尺寸:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

然后根据帖子类型手动生成它们,方法是连接到“ wp_generate_attachment_metadata”,您可以在其中访问附件ID(因此可以访问其父帖子):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );

您在最后一个add_filter中传递的10和2个参数是什么?
路加福音

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.