删除或更新添加图像大小

时间:2012-12-04 作者:Q Studio

我正在研究一个主题,该主题使用以下方法正确定义了许多图像大小:

add_image_size( \'name\', 500, 200, true );
我想覆盖子主题中定义的这些大小:

add_image_size( \'new-name\', 400, 300, true );
我知道我可以添加新尺寸,但如果我添加相同的名称,即:

add_image_size( \'name\', 400, 300, true );
然后使用父函数调用-忽略子函数调用-添加额外的规则会添加永远不会使用的额外图像-这还不错,但效率不高。

是否有取消注册增加图像大小的功能?

干杯

射线

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

这个add_image_size( $name, $width, $height, $crop ) 函数足够优雅,可以使用相同的$name. 这很简单overwrites the existing value:

$_wp_additional_image_sizes[$name] = array( \'width\' => absint( $width ), \'height\' => absint( $height ), \'crop\' => (bool) $crop );
因此,这意味着覆盖父主题对自定义图像大小的定义所需要做的就是确保调用add_image_size() 火灾after 父主题的调用。

假设父主题确实如此:

function parent_theme_setup() {
    add_image_size( \'name\', 500, 200, true );
    add_image_size( \'new-name\', 400, 300, true );
}
add_action( \'after_setup_theme\', \'parent_theme_setup\' );
然后父主题的add_image_size()after_setup_theme 挂钩,默认优先级(即。10).

(注意:如果调用没有包装在回调中,则会在plugins_loaded 挂钩,优先10.)

以下是关键部分:the child Theme\'s functions.php file is parsed before the parent Theme\'s, 所以如果你用同样的钩子add_image_size() 调用时,它们将被父主题的add_image_size() 呼叫。

解决方案是使用更晚的挂钩或更低的优先级,以确保子主题add_image_size() 调用在父主题之后激发。

无论父主题如何激发调用,这都应该起到作用:

function child_theme_setup() {
    add_image_size( \'name\', 400, 300, true );
}
add_action( \'after_setup_theme\', \'child_theme_setup\', 11 );
请注意,我们使用相同的after_setup_theme 挂钩,但使用较低优先级(即。11 而不是10. 回调按从较高优先级(较低编号)到较低优先级(较高编号)的顺序触发,从优先级开始0. 所以回调连接到优先级11 将在挂接到优先级的回调后激发10.

还请注意after_setup_theme 钩子本身在plugins_loaded 钩子,因此此回调仍将覆盖父主题,即使父主题是_doing_it_wrong() 通过不将此类调用包装在适当的回调中,并连接到适当的挂钩中。

SO网友:Yulia V

如果有人想简单地取消设置额外的图像大小,而不是更改尺寸,请使用remove_image_size( string $name ), e、 g。

function pinboard_child_theme_setup( $sizes) {

    $image_size_names = array(\'thumbnail\', \'medium\', \'large\',
        \'slider-thumb\', \'blog-thumb\', \'teaser-thumb\', \'gallery-1-thumb\',
        \'gallery-2-thumb\', \'gallery-3-thumb\', \'image-thumb\', \'video-thumb\');

    $image_size_names_length = count($image_size_names);
    for($x = 0; $x < $image_size_names_length; $x++) {
        remove_image_size($image_size_names[$x]);
    }   
}
add_action( \'after_setup_theme\', \'pinboard_child_theme_setup\', 11);

SO网友:robin

在智利主题中,您需要使用add_action( \'after_setup_theme\',\'new-name\');

结束

相关推荐

Upload images with comment

编辑:我终于得到了正确的答案;请在这篇帖子下面为所有感兴趣的人查看我自己的答案。经过几天的搜寻和反复尝试,我真的被卡住了。我有一个客户,他通过使用评论表在自己的网站上收集客户体验;所有评论都显示为客户评论。到目前为止还不错。但由于这家公司在旅游方面做得很多,他需要让他的客户上传多达五张图片,并附上评论。所以我需要做的是找到一种方法,让客户上传媒体,并填写评论表。我知道这有点冒险,因为可能会上传损坏的图像等等。但我仍然希望实现这一目标。尝试了很多东西,但我一次又一次陷入困境的地方是文件上传处理,对于一个未登