元の画像を残したまま、サイズ変更した画像をすべて削除します。未使用のデータが20 GB以上あるため、サーバーの空き容量が不足しています。例えば:
将来、サイズ変更されたすべての画像を削除してそのような画像の作成を無効にする方法はありますか?
回答の大部分は、将来のデフォルトの画像サイズの作成を停止する方法について説明しましたが、これはテーマのカスタムサイズの作成を考慮していませんが、functions.php
に追加する別のソリューションを次に示します。
function wpse_240765_unset_images( $sizes ){
unset( $sizes[ 'thumbnail' ]);
unset( $sizes[ 'medium' ]);
unset( $sizes[ 'medium_large' ] );
unset( $sizes[ 'large' ]);
unset( $sizes[ 'full' ] );
return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_unset_images' );
また、画像をゼロに設定して、将来のデフォルトの画像生成をオフにすることもできます。
しかし、オリジナル以外の画像を削除するために、それをしないように設定するのを忘れたときに同じ問題に遭遇しました。
SFTPサービスを使用してすべての写真をローカルにダウンロードします。 送信 (有料)が大好きですが、 Filezilla (無料)のようなものを使用できます。
すべてのファイルをディレクトリにダウンロードします。
私はMacを使用していますが、bashを許可する端末であれば動作します。単純なbashスクリプトをコーディングしました。
# !/bin/bash
USERNAME=vader
DIRECTORY="/Users/$USERNAME/desktop/question240765"
for imageWithSize in $(find "$DIRECTORY" -type f -regex '.*/[a-z-]*-[0-9].*.txt$'); do
cd $DIRECTORY
echo rm $imageWithSize
done
このフォルダーはデスクトップ上にあり、質問のためにquestion240765
という名前を付けました。これをテストするために.txt
ファイルを使用しましたが、.jpg
に変更できます。それをbashファイルimage_dust.sh
として保存したので、後で修正したり強化したりすることができます。最初にecho
を指定してスクリプトを実行すると、行を変更してファイルにダンプすることもできます。
echo rm $imageWithSize
に:
echo rm $imageWithSize >> result.txt
これにより、すべてのファイルがresult.txtファイルに記録され、実際に削除する前に参照できます。すべてがうまくいけば、その行を次のように変更します。
rm $imageWithSize
ここで興味がある場合は、正規表現が何をするかです:
[a-z-]*
は、foo-bar
やfo-fo-bar
などのファイル名を探します。名前に大文字が含まれている場合は、[A-Za-z-]*
を使用します-[0-9]
ファイル名の後、残りの-
(ダッシュ)と番号[0-9]
を探します.*.txt
は、拡張子の付いた名前の最初の数字以降を探します。スクリプトを作成して実行した後。サイト上のすべてを吹き飛ばして、画像を再アップロードできます。ファイルサイズが心配な場合は、imagemagick
を使用しますが、sips
を使用して画像の圧縮サイズを小さくします。
コーディングがあなたの最強のポイントではない場合、プラグインソリューションを見たいかもしれません。
私が念頭に置いているのは、WordPressリポジトリにあるいくつかの無料プラグインの提案です。
私はまだ最初のものを使用していないことを認めなければなりません- Media Cleaner -したがって、私はあなたに確固たる意見を提供することはできません。
私は2番目のものを使用しました- 画像のサイズ変更を最適化 -期待した結果が得られました.
何かを試みる前に、
完全に作成することの重要性を十分に伸ばすことができません WordPressインストールのバックアップ (アップロードフォルダーとdBの両方)。
20GBについて話していることは理解していますが、特にこのユニークな状況では、バックアップが不可欠です。
この手順は時間がかかり、サーバーに負荷がかかります。
サイトをメンテナンスモードにするのが賢明です。
孤立した添付ファイルを削除する
すべて完了したらお気に入りを使用してください サムネイルを再生成 プラグインを使用して、WordPress /テーマの画像サイズを元に戻し、インストールします- EWWW Image Optimizer および Imsanity 。この組み合わせにより、最適化、サイズ変更、必要な画像のみが保証されます。
最良の結果を達成した方法をお知らせください。
余分な画像ファイルをすべて削除するには、すべての投稿をループ処理し、それらの投稿への添付ファイルを見つけ、不要になった添付画像サイズを確認してそれらのファイルを削除する必要があります。さあ。
まず、 (カスタム)投稿とページをすべて取得します およびそれらをループ処理します。
$the_query = new WP_Query (array ('posts_per_page' => -1, 'post_type' => 'any'));
foreach ($all_posts as $post) { ... }
$post
の次は すべての添付画像を取得する および すべてのメディアサイズの一覧を取得する 。それからそれらをループします。
$images = get_attached_media ('image',$post); // returns array of post objects
$sizes = get_intermediate_image_sizes(); // returns array of identifying strings
foreach ($images as $image) {
foreach ($sizes as $size) {
...
}
}
今、この画像とサイズのために、 URLを見つける そして ファイルを削除する
$att = wp_get_attachment_image_src ($image->ID,$size); returns array of file properties
wp_delete_file ($att['url']);
私はそれを適用する前にこのコードを徹底的なテストをしたいと思います...画像内の20GBの場合、実行にもしばらく時間がかかる可能性があります。
わかりません、既存の画像を削除する方法。しかし、アップロードしようとしている新しい画像の画像サイズの生成をやめることはできます。
あなたがコードを書きたいのなら: あなたのテーマのfunctions.php
ファイルにこのコードスニペットを置いてください -
add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_image_sizes' );
function wpse_240765_image_sizes( $sizes ){
$sizes = array();
return $sizes;
}
またはプラグイン付き: このプラグインを使用する - https://wordpress.org/plugins/image-sizes/ /
SSHアクセスがある場合は、以下のコマンドを実行してサイズ変更されたイメージを一覧表示したり削除したりできます。後でそれらを再構築することができます。
すべてのサイズ変更された画像を一覧表示します。
# List all resized images.
# Usage: lrimg site.ext
function lrimg() {
clear
THE_PWD=$PWD
cd ~
cd /var/www/"$1"/htdocs/wp-content/uploads/
find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f
cd $THE_PWD
}
サイズ変更した画像をすべて削除します。
# Remove all resized images.
# Usage: lrimgrm site.ext
function lrimgrm() {
clear
THE_PWD=$PWD
cd ~
cd /var/www/"$1"/htdocs/wp-content/uploads/
find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f -exec rm {} \;
cd $THE_PWD
}
ここに注意してください。バックアップの準備をしてください。
P.S私のサーバーはNGINXセットアップをしているので、サイトパスはサイト名であるパラメータである/var/www/"$1"/htdocs/
$ 1です。パスに合わせて修正することができます。
流れるステップはそれをするべきです:
1)関連ファイルから不要な画像サイズを削除することから始めます。関数。テーマ内のPHP、および存在する場合はすべてのプラグイン(たとえば、ラダーレス)。
2)次に、あなたはFTPですべての必要な画像サイズを削除することができます。
3)それからあなたはサムネイルを再生成する必要があります(例えばWordpressが作成するように言われているすべての画像サイズ)。あなたはWPリポジトリから任意の 'サムネイルの再生'プラグインを使うことができます。
代わりにこれを試してください:1)上記のステップ1と同じ
2)プラグインディレクトリ(repo)には、すべてのWPサムを削除し、Webサイトの特定のページで初めて呼び出されたときにのみサムを生成するプラグインがいくつかあります。その後のイメージ要求では、そのイメージは既に存在しており、通常どおりに機能します。これの利点は、親指があなたのサイトで実際に必要とされるイメージ/サイズのためにだけ作成されるということです。ただし、標準以外の方法で呼び出されたイメージは生成されない可能性があります。
あなたが過度に大きいオリジナル画像から追加のオーバーヘッドを減らしたいならば、あなたが選んだサイズまでこれらのオリジナルの物理的なファイルサイズを減らすために 'imsanity'プラグインを使うことができます。ユーザーが投稿した画像を含むサイトに最適なツールです。
1)WordPressが画像のアップロード時に複数の画像サイズを作成しないようにするには、プラグインを使用せずにこれを達成できます。
管理セクションの 設定 > メディア に移動します。
サイズを 0 に設定すると、WordPressがデフォルトの画像サイズを作成できなくなり、元の画像のみが保存されます。
2)あなたがあなたのサイトに持っている20GBの画像を減らすために、私はあなたのサーバーに単にSFTPしてそして手動で異なるサイズの画像を削除するでしょう。 WordPressインストールのルートディレクトリからwp-content/uploads/<yyyy>/<mm>/
に移動すると、あなたのすべての画像とメディアのアップロードが見つかります。必ず元の画像をそのまま使用するか、または単に画像全体を削除してください。追加の- ###x###.jpg
が付いた画像ファイル名はすべて自動生成された画像です。元のイメージはファイル名にこれを含まないでしょう。
さておき - あなたの画像を手助けするために、WPMU DEVのWP-Smushプラグインをチェックする。
それは本当に素晴らしいです、そしてあなたが画像をアップロードするときそれは保存する前に画像を自動的に圧縮し圧縮するためにそれらのサーバーを使います。また、大きな解像度の画像を妥当な最大サイズに縮小することもできます。あなたは本当に2048×2048より大きい画像を表示する必要はないはずです。