使用ADD_IMAGE_SIZE使用精确图像大小

时间:2014-12-26 作者:iSaumya

我有一个非常基本的问题。这可能是一个很难回答的问题,但它让我很困扰。在我的主题中,我添加了如下自定义图像大小:

function img_update() {
    if ( function_exists( \'add_image_size\' ) ) {
        add_image_size( \'blog_feat_img\', 720 );
        add_image_size( \'latest_posts_widget_feat_img\', 400 );
        add_image_size( \'portfolio_widget_feat_img_1x\', 400 );
        add_image_size( \'portfolio_widget_feat_img_2x\', 800 );
        add_image_size( \'blog_body_img\', 740 );
    }
}
add_action( \'after_setup_theme\', \'img_update\', 11 );
现在,我使用另一个函数将其添加到媒体下拉列表中,如下所示:

function mytheme_image_size_names( $sizes ) {
    $sizes[\'blog_body_img\'] = __( \'Blog Body Image\', \'isaumya\' );

    return $sizes;
}
add_filter( \'image_size_names_choose\', \'mytheme_image_size_names\', 11, 1 );
一切都很好,但我有一个有线问题。当我加载的图像1024x768 它应该生成740x555 复制,因为我没有提到高度,所以应该根据宽度选择适当的高度。但相反,它正在产生650x488 的版本blog_body_img. 我不知道为什么。我还尝试通过0作为高度true 作为裁剪参数。它仍然会产生650x488 版本和否740x555. 为什么?

有人能帮我解决这个问题吗?

2 个回复
最合适的回答,由SO网友:iSaumya 整理而成

我终于解决了这个问题。在我的父主题中,开发人员使用了以下代码

if ( ! isset( $content_width ) )
{
    $content_width = 650;
}
这意味着如果$content_width 尚未设置,然后将其设置为650。现在在我的chield主题中,在重写和提及图像类型时,我刚刚添加了几行如下内容:

function img_update() {
    global $content_width;

    if ( isset( $content_width ) )
    {
        $content_width = 740;
    }

    if ( function_exists( \'add_image_size\' ) ) {
        add_image_size( \'blog_feat_img\', 720 );
        add_image_size( \'latest_posts_widget_feat_img\', 400 );
        add_image_size( \'portfolio_widget_feat_img_1x\', 400 );
        add_image_size( \'portfolio_widget_feat_img_2x\', 800 );
        add_image_size( \'blog_body_img\', 740 );
    }
}
add_action( \'after_setup_theme\', \'img_update\', 11 );
我已经检查了该类型的$content_width 已设置。这是一个很好的例子,因为我的函数优先级为11,所以父主题函数首先设置值,然后我覆盖它。

现在一切都好了。

Previous

wrong image width

Now

everything is ok

SO网友:vlood

使用“9999”作为add\\u image\\u size函数的高度限制。因此,您将在不裁剪或挤压图像的情况下保存比率,并且只会遵循宽度限制。

Height是必需的,没有默认值(请参见此处:https://developer.wordpress.org/reference/functions/add_image_size/)

结束

相关推荐

每页完全不同的Functions.php?

是否可以通过条件加载完全不同的函数?i、 函数中的e。php您有一个条件加载在旧函数的include中,然后有另一个条件加载在新函数中?这样做的原因是一个网站正在呈现新的面貌,但只是一页一页,旧的样式和功能很混乱,需要更换,但我不能只是删除它们,因为网站的其余部分将失败。