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


12

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

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

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

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

ここに画像の説明を入力してください

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


興味深い質問。一般的に言えば、カスタムメディアアップローダーモーダルスクリプトを介してカスタム変数を渡すことを考えています。これが唯一の方法かもしれませんが、私はそれについて100%確信していません。続けて検索すると、必要な情報が見つかります。その後、戻って具体的な情報を使用して質問に回答するか、自分で解決する場合は、ソリューションを回答として投稿します。幸運を!
ニコライ14

カスタムと言うと、たとえばここで説明しように、WordPress Media Uploaderのカスタム使用を意味します
ニコライ14

ええ、Flash Uploaderの時代に、私は以前にこのようなことをしたことがあります。今回はもっときれいな方法を探していましたが、それは不可能かもしれません。調べてくれます、ありがとう!
モラレイダ14

聞いたことがありますが、実際にはそんなに悪いとは思いません。その上、私が言ったように、私はそれをする別の方法を見たり知りませんが、それを解決するためにもっと多くの知識を持った誰かが来るかもしれません。
ニコライ14

1
これを進めていますか?そうでない場合でも、作業中のコードがある場合は投稿してください。基盤がもっとあるのであれば、私は質問に対する報奨金を用意したいと思います。
ニコライ

回答:


4

ハンドラーで「エラー」を設定すると、エラーメッセージが表示され、アップロードがキャンセルされます

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の観点から)アップロードさと大きさをテストする前の画像ですされている場合は、テストしたいことがありので、非常に早期のアップロード処理できます。

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


はい、これはファイル名とsvgプロパティを検証するためにすでに行っていることです。私が今必要なのは、別のパラメーターをその(または別の)フィルターに渡し、そのアップロードによってどのフィールドが入力されているかを示して、フィールドごとに異なる制限を適用できるようにする方法です。これは現在保留中です。調査結果については後で質問を更新します。
モラレイダ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.