我写了另一个站点可能的解决方法,但让我在这里重复其中的一部分,并对您的问题进行一些调整:
媒体库网格视图使用主干微模板,并通过ajax获取数据。
在imageSize()
方法,在media-view.js
文件,我们可以看到medium
使用大小,如果该大小不存在,则使用实际/完整大小:
size = size || \'medium\';
要使用
thumbnail
相反,您可以尝试以下操作:
/**
* Use a custom fallback image size, if medium size doesn\'t exists.
*
* @see http://wordpress.stackexchange.com/a/177571/26350
*/
add_filter( \'wp_prepare_attachment_for_js\', function( $response, $attachment, $meta )
{
// Fallback image size, if medium size doesn\'t exists.
$fallback_size = \'thumbnail\'; // Edit this to your needs.
// If medium size image doesn\'t exist:
if( \'image\' === $response[\'type\'] && ! isset( $response[\'sizes\'][\'medium\'] ) )
{
// Use the fallback size instead:
if( isset( $response[\'sizes\'][$fallback_size] ) )
$response[\'sizes\'][\'medium\'] = $response[\'sizes\'][$fallback_size];
}
return $response;
}, 10, 3 );
如果要使用默认图像以外的其他自定义回退图像大小,可以通过
image_size_names_choose
筛选或将其添加到上述检查中:
$response[\'sizes\'][\'medium\'] = wp_get_attachment_image_src(
$response[\'id\'],
$fallback_size
);
Note 将不存在的中等图像大小插入帖子内容编辑器时,此方法将其替换为备用大小,而不是全尺寸。
另一种激进的方法是(从插件代码中,无需修改核心文件)覆盖主干微模板以满足您的需要,例如:
<# if ( data.sizes.medium ) { #>
<img src="{{ data.sizes.medium.url }}" draggable="false" alt="" />
<# } else if ( data.sizes.fallback_image_size) { #>
<img src="{{ data.sizes.fallback_image_size.url }}" draggable="false" alt="" />
<# } else { #>
<img src="{{ data.size.url }}" draggable="false" alt="" />
<# } #>
我们更换的地方
fallback_image_size
使用回退映像大小,例如。
thumbnail
.
但我不确定这些微模板在WordPress版本之间的变化频率,所以我暂时不推荐;-)