如何设置特色图像的最小要求尺寸?

时间:2019-09-23 作者:Damian

我想为特色图片设置所需的最小尺寸。我想防止使用小于特征图像大小的图像,因为否则一些图像可能会显示不正确。

例如,我设置图像大小

add_image_size(\'article-retina\', 758, 400, true);
但当我选择小于此大小的特征图像文件时,不会生成此大小的缩略图,因此图像将无法正确显示。

那么这是可以简单完成的,还是更复杂?

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

我能想到的最好的解决方案是一个由两部分组成的程序,它添加元数据,然后过滤用户可以从中选择的图像。

如果我找到了更新选择器以添加警报的方法,我会将其作为单独的答案添加。

第一:添加图像元数据,以便我们以后过滤图像

add_filter(\'wp_generate_attachment_metadata\', \'wpse_add_meta\', 10, 2);
function wpse_add_meta($meta, $id){
    if (array_key_exists(\'height\',$meta)){
        update_post_meta($id, \'height\', (int) $meta[\'height\']);
        update_post_meta($id, \'width\', (int) $meta[\'width\']);
    }
    return $meta;
}
2d:过滤特征图像选择器返回的图像,使用高度和宽度的新元值(添加在上面的过滤器中)。

add_filter(\'ajax_query_attachments_args\', \'e2_attachments_ajax\' );
function e2_attachments_ajax($query){
    $minHeight = 400;
    $minWidth = 758;
    $query[\'meta_query\'] = array(
        \'relation\' => \'AND\',
        array(
            \'key\'     => \'height\',
            \'value\'   => $minHeight,
            \'type\'    => \'numeric\',
            \'compare\' => \'>\',
        ),
        array(
            \'key\'     => \'width\',
            \'value\'   => $minWidth,
            \'type\'    => \'numeric\',
            \'compare\' => \'>\',
        )
    );

    return $query;
}
NOTE: 对于现有站点,您需要运行一个进程来更新现有上载的图像。在添加第一个过滤器“wp\\u generate\\u attachment\\u metadata”后运行此选项,以便更新高度和宽度属性。我推荐这样的Ajax Rebuild Thumbnails.

SO网友:Mike Baxter

将以下内容添加到函数中。php文件。您可以根据需要调整“高度”和“宽度”尺寸。这将拒绝未达到最小尺寸的上载图像

add_filter(\'wp_handle_upload_prefilter\',\'wpse_handle_upload_prefilter\');
function wpse_handle_upload_prefilter($file)
{

    $image_types = array(\'png\',\'jpg\',\'jpeg\',\'gif\');
    $upload_type = explode(\'/\',$file[\'type\'])[1];
    $minimum = array(\'width\' => \'758\', \'height\' => \'400\');        

    // only check images...
    if (in_array($upload_type,$image_types)){

        $img = getimagesize($file[\'tmp_name\']);
        $width = $img[0];
        $height = $img[1];

        if ($width < $minimum[\'width\'] ){
            return array("error"=>"The uploaded image is too small. Minimum width is {$minimum[\'width\']}px. The uploaded image width is {$width}px.");    
        } elseif ($height <  $minimum[\'height\']) {
            return array("error"=>"The uploaded image is too small. Minimum height is {$minimum[\'height\']}px. The uploaded image height is {$height}px.");
        } else {
            return $file; 
        } // end if width or height
    } // end if upload type is image type

} // end function

相关推荐

https images not displaying

Setup嗨,伙计们!我有个奇怪的问题。我正在使用安装了ssl证书的wordpress Premium BeTheme。Problem问题是,虽然图像是用https上传到网站上的,但它们没有显示出来。如果我手动将图像的URL从https切换到http,它们就会开始显示。What I have done?我尝试过在internet上卸载ssl证书和几乎所有的解决方案,但都没有解决。Here is the URL of the website : https://uptimeelite.com/