WordPressの投稿を削除するとき、関連するメディアもいちいち手動で削除するのは面倒だと感じたことはありませんか?
通常WordPressの投稿を消しても投稿に使った画像が残ってしまいます、少なければ自身で選んで消す事が一番簡単ですが多くなると面倒になりますのでので、今回は、投稿を削除する際に自動的に関連するメディアも一括で削除できる方法をご紹介します。
メディアを消す方法
最初に一言!「メディアは投稿の都度消す事が正しい方法です!」先ずはこれが王道です。
一般的にメディアを消す方法はグローバルメニューから「メディア」から消す事が多いと思います、この時「未添付」を選択すると添付されていないメディアが一覧で出てくると思いますが、これを一括選択して消してはいけません。
添付されてるメディアも出てきます、メディア登録が先か投稿中でメディアを添付させたか、アイキャッチに使っているかで未添付に入ってきます。
だからといって投稿を削除するたびに、それに関連するすべての画像メディアを手動で削除するのは、時間と手間がかかります。
一度メディアから消してしまうと復元は不可能の事が多いです、サーバーなど自動バックアップなどを利用して復元する事が出来る場合がありますが、あまりお勧めはしません!消す画像は慎重にして下さい。
その為面倒な事はコードを使って、その手間を一気に解消させます
投稿内のメディアを一括削除コード
面倒な事は自動で行ってもらうが一番手っ取り早く手簡単です。
以下のコードをテーマの「functions.php
」 ファイルに追加するだけで、投稿を削除する際に関連するメディアも同時に完全に削除されるようになります。
functions.php
に追加しますので、functions.php
を可笑しくなりますとブログ自体が表示されなくなる恐れがありますのバックアップや慎重に行って下さい。
投稿を削除するとメディアも消えますが、使いまわしているメディアも一緒に消えます、アイキャッチや他の投稿内で共有で利用しているメディアが多数の場合は以下のコードを入れる事はお勧めしません。
以下のコードをfunctions.php
に追加して下さい。
グローバルメニューから「外観」「テーマファイルエディタ」から「functions.php」の一番下の空欄に下記コードを追加するだけです。
コード記載
// 投稿に関連するメディアを削除する add_action( 'before_delete_post', 'wpse_delete_post_media' ); function wpse_delete_post_media( $post_id ) { // 投稿に関連するメディアを取得する $attachments = get_children( [ 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => -1, 'post_status' => 'any', 'post_parent' => $post_id ] ); // メディアを削除する foreach ( $attachments as $attachment ) { wp_delete_attachment( $attachment->ID, true ); } }
必ず以下の画面が出た事を確認して下さい。
エラーが出たまま画面を他の画面に移行すると真っ白な画面でブログに正常にアクセスする事出来なくなります。
コードの詳細を説明します。
コードは before_delete_post
アクションフックを使用しており、投稿が削除される前に実行されます。投稿に関連するすべての画像メディアを取得し、wp_delete_attachment()
関数を使って一括削除しています。このため、手動で1つずつ削除する手間がなくなり、作業効率が格段にアップします。
先ほども記載しましたが、共通で使用している写真も消えます消す際には他の投稿に使用されていないか注意して下さい。
共通で使用しているメディアをその後も使いたい場合には複製(コピー)を作るなどして、消す方に変更するなどの対策をして下さい。
投稿管理の手間を減らし、投稿に集中出来る様に正しく利用すれば、WordPressの投稿管理が簡単で快適になることでしょう。より効果的に活用しましょう!
大切なメディアを誤って削除してしまわないように、コードの使用には十分注意してください。
コメント