请记住,$content_width
全局不仅用于图像,而且还用于视频等嵌入式对象。因此,任何解决方案都将不仅仅是放弃$content_width
自身使用/支持的情况。
通常,主题将以几种方式限制内容区域图像:
- 大图像尺寸:定义
$content_width
适合主题设计的内容
- 原始/完整图像尺寸:定义CSS规则,
#content img { max-width: XXX; height: auto; }
以确保插入的完整尺寸图像不会破坏布局
- 缩略图图像大小:调用
set_post_thumbnail_size()
以定义“特色图像/张贴缩略图”默认thumbnail
大小。(注意:我个人不建议使用此方法。为功能图像定义特定于给定位置的自定义图像尺寸,然后通过调用特定模板位置中的自定义尺寸the_post_thumbnail( $size )
。)
正如您所发现的那样,由于WordPress选择中间图像大小以用于任何给定图像请求的方式,该请求可能会导致浏览器缩放图像。
大图像的主题定义值
一种选择是重新定义大图像尺寸的设置。(请谨慎操作。这对您自己的网站来说很好,但是与用户配置设置混淆的公开分发的主题最多是...灰色区域。)
大图像尺寸设置存储为:
$large_image_width = get_option( 'large_size_w' );
$large_image_height = get_option( 'large_size_h' );
因此,您可以根据自己的值设置这些值$content_width
:
global $content_width;
update_option( 'large_size_w', $content_width );
update_option( 'large_size_h', $content_width );
(当然,您需要对此进行一些故障保护/错误检查。)
删除选项以插入全尺寸图像
如果您只是想阻止用户插入完整尺寸的图像(再次:请谨慎操作;这可能是插件领域),则可以过滤'image_size_names_choose'
:
function wpse86950_filter_image_size_names_choose( $possible_sizes ) {
unset( $possible_sizes['full'] );
return $possible_sizes;
}
add_filter( 'image_size_names_choose', 'wpse86950_filter_image_size_names_choose' );
再说一遍:您可能要在此处添加一些可靠的故障保护,因为此过滤器在多个地方使用。
为全幅图像定义自定义图像尺寸
与上一个选项相关,您可以定义'full-post-width'
图像尺寸:
global $content_width;
add_image_size( 'full-post-width', $content_width, $content_width, false );
然后,将其添加到可用选项列表中:
function wpse86950_filter_image_size_names_choose( $possible_sizes ) {
// Unset full image size
unset( $possible_sizes['full'] );
// Add full-post-width image size
$possible_sizes['full-post-width'] = 'Full Post Width';
// Return array
return $possible_sizes;
}
add_filter( 'image_size_names_choose', 'wpse86950_filter_image_size_names_choose' );