web-dev-qa-db-ja.com

アップロード後に元の大きなサイズの画像を削除し、メディアギャラリーで3つの画像だけを整理したままにします。

Gravityフォームを介してアップロードされた元の画像をどうにかして消去することが可能かどうかを知る必要があります。今の状況で私は4枚の画像を受け取る。オリジナル1枚(ユーザーが自分のPCに持っているものは何でも - サーバーを雑然とさせる最大4 MBまで)およびWordpressが仕様(サムネイル、中、大)に従って作成する3枚。ユーザーが "オリジナルの大きな画像"をアップロードしたときに削除されてメディアギャラリーに残り3つ残されるようにしたいのですが?それは私のサーバーの記憶容量を劇的に改善するでしょう。

乾杯!

5
jimilesku

これはどう:

add_filter( 'wp_generate_attachment_metadata', 'delete_fullsize_image' );
function delete_fullsize_image( $metadata )
{
    $upload_dir = wp_upload_dir();
    $full_image_path = trailingslashit( $upload_dir['basedir'] ) . $metadata['file'];
    $deleted = unlink( $full_image_path );

    return $metadata;
}

メインイメージがなくてもすべてが問題なく動作することを100%保証できるわけではありませんが、うまくいきます。メイン画像がこれに必要なので、あなたはサムネイル/サイズを再生することができないでしょう。

編集:私はただ質問をもう一度読みます、私はあなたが人々がフォームを通してアップロードするときにだけこれが起こりたいと思っているのに気付きました。私にとっては早めでなければなりません、上記のコードはアップロードされた添付ファイルを削除します。アップロードが自分の重力フォームを介して行われたものかどうかを確認する方法を見つけるだけでよいのです。それがとにかくあなたを助けることを願っています。

5
Cristian