我有一个非常基本的问题。这可能是一个很难回答的问题,但它让我很困扰。在我的主题中,我添加了如下自定义图像大小:
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
. 为什么?
有人能帮我解决这个问题吗?
最合适的回答,由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
Now