アップロードに最小画像サイズを要求する方法は?


17

著者が特定の寸法以下の画像をアップロードするのを制限する方法が必要です。

少なくとも400px x 400pxの画像のアップロードのみを許可するとします。画像サイズが小さい場合、作成者は画像が小さすぎるというエラー通知を受け取るはずです。

これを達成できるプラグインまたはコードはありますか?

回答:


25

このコードをテーマのfunctions.phpファイルに追加すると、画像の最小寸法が制限されます

add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file)
{

    $img=getimagesize($file['tmp_name']);
    $minimum = array('width' => '640', 'height' => '480');
    $width= $img[0];
    $height =$img[1];

    if ($width < $minimum['width'] )
        return array("error"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px");
    else
        return $file; 
}

次に、必要な最小寸法の番号を変更します(私の例では640と480です)


ありがとう!投稿のサムネイルを含める場合、この関数を実行しない方法はありますか?
アーサードスサントスディアス

これは、ファイルをアップロードするたびに実行されます。このステップでは、ファイルを分類したり、サムネイルとして割り当てる前に、まだファイルのままです。ファイル名に基づいて選択した接頭辞/接尾辞を使用して条件を追加し、これによりサムネイルにファイル名を付けることができます。ファイル名がその条件を満たしている場合、関数を実行しません。
マオールバラザニー

行14の参照では、「幅」を「高さ」に置き換える必要がありますが、それ以外の場合はまさにこれが必要でした。

11

同僚のコードを再フォーマットしたくない。
したがって、これは@MaorBarazanyとほぼ同じ答えですが、MIMEタイプをチェックし、file['error']宣言を変更し、このネームスペースをこのwpse質問IDに変更します。

また、チェックは管理者ではないユーザーに対してのみ行われます。

add_action( 'admin_init', 'wpse_28359_block_authors_from_uploading_small_images' );

function wpse_28359_block_authors_from_uploading_small_images()
{
    if( !current_user_can( 'administrator') )
        add_filter( 'wp_handle_upload_prefilter', 'wpse_28359_block_small_images_upload' ); 
}

function wpse_28359_block_small_images_upload( $file )
{
    // Mime type with dimensions, check to exit earlier
    $mimes = array( 'image/jpeg', 'image/png', 'image/gif' );

    if( !in_array( $file['type'], $mimes ) )
        return $file;

    $img = getimagesize( $file['tmp_name'] );
    $minimum = array( 'width' => 640, 'height' => 480 );

    if ( $img[0] < $minimum['width'] )
        $file['error'] = 
            'Image too small. Minimum width is ' 
            . $minimum['width'] 
            . 'px. Uploaded image width is ' 
            . $img[0] . 'px';

    elseif ( $img[1] < $minimum['height'] )
        $file['error'] = 
            'Image too small. Minimum height is ' 
            . $minimum['height'] 
            . 'px. Uploaded image height is ' 
            . $img[1] . 'px';

    return $file;
}

フックの結果:

ブロックされた画像のアップロード


これを愛し、それは魅力のように動作します。ただし、1つの問題があります:このフィルターを特定の投稿タイプにのみ適用する場合、ユーザーはこれらの要件を満たさない別の投稿タイプ(サイズ要件なし)でアップロードされたメディアライブラリから画像を選択できます。
cfx

注目の画像をアップロードする場合にのみこれを適用する方法はありますか?
デスロック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.