web-dev-qa-db-ja.com

Media Uploaderを使用してサイズの違う画像のアップロードを拒否する

編集後の画面でカスタムフィールドに画像を追加するための超厳密な設定に取り組んでいます。私の最適なシナリオは、ユーザーがその特定のカスタム値に対して間違ったサイズの画像をアップロードしようとしたときにカスタムエラーメッセージを追加することです。

私は私がどんなカスタムアップローダでもこれをすることができることを知っています、しかし私は本当に通常のメディアアップローダでそれをしたいです。 wp_handle_upload_prefilter も知っています - // wp_handle_upload_prefilter - /私はすでにファイル名を検証し、一般的な要件に基づいてカスタムエラーメッセージを生成するために使用します。私が今必要としているのは、どのフィールドにアップロードしているかに基づいて、カスタム要件を使用してアップロードを拒否する方法です。

アップロード時に投稿画像と注目画像を区別する/ /も知っています しかし、保存前のソリューションを望んでいました。

これは次のようになります。

enter image description here

どの分野を扱っているのかをwp_handle_upload_prefilter(または同様のもの)に知らせる方法についてのアイデアはありますか?

12
moraleida

ハンドラーで 'error'を設定した場合、エラーメッセージが表示されアップロードがキャンセルされます

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

ユーザーが異なるサイズをアップロードしようとすると、メッセージは次のようになります。

“thefile.png” has failed to upload due to an error  
Size must be exactly 800 * 600

wp_handle_upload_prefilterはアップロード処理の非常に早い時期に来るので、ファイルが(HTTPの観点から)正しくアップロードされていて、サイズをテストする前にイメージであるかどうかをテストすることをお勧めします。

参照:funtion wp_handle_upload() コアファイルwp-admin/includes/file.php

3
YaFred