[WordPress]文と共に接続されたメディアファイルを削除する方法

Last Updated: 2016 年 08 月 23 日 2のコメント

WordPress 投稿(投稿)を削除すると、投稿のみが削除され、投稿に含まれているメディアファイルは削除されません。 投稿を削除した場合は、メディアファイルを見つけて削除する必要があります。 記事にリンクされているメディアファイルを簡単に削除するには、記事を削除する前に記事編集モードに入り、メディアを追加「ボタンを押して」この記事にアップロードされたもの「」を選択すると、その記事にアップロードされた画像ファイルを表示できます。これにより、簡単に削除できます。

WordPress - 現在の文にアップロードされたメディアファイルを表示する

この方法は、面倒です。 (ただし、面倒でも、この方法をお勧めします。)もし文の削除時に接続された画像を自動的に削除することを希望する場合は、次のコードを使用することができます。

function delete_post_media( $post_id ) {

$attachments = get_posts( array(
'post_type'      => 'attachment',
'posts_per_page' => -1,
'post_status'    => 'any',
'post_parent'    => $post_id
) );

foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID ) ) {
// Log failure to delete attachment. (첨부파일 삭제 실패 시 로그를 기록함)
}
}
}
add_action('before_delete_post', 'delete_post_media');
// Source: stackexchange

上記のコードをテーマの関数ファイル(のfunctions.php)に追加すると、必要に応じて動作します。 記事にリンクされたメディアを削除するときには注意が必要です。 もし画像ファイルが複数の文に使用されている場合は問題が発生します。 したがって、上記のコードを使用するときは、この点を念頭におくのがよいようです。

上記のコードを少し変更して、次のように使用することができます。

function delete_post_media( $post_id ) {

if(!isset($post_id)) return; // 이 라인을 삭제하면 상위 항목이 있는 모든 첨부파일이 영구적으로 삭제됩니다!
elseif($post_id == 0) return; // Will die in case you have 0 set. there's no page id called 0 :) -- post id가 0인 경우 종료.
elseif(is_array($post_id)) return; // Will die in case you place there an array of pages - 페이지 배열인 경우 종료?

else {

$attachments = get_posts( array(
'post_type'      => 'attachment',
'posts_per_page' => -1,
'post_status'    => 'any',
'post_parent'    => $post_id
) );

foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID ) ) {
// Log failure to delete attachment - 첨부 파일 삭제 실패 시 로그 기록
}
}
}
}
// Source: WordPress Support Forum

このコードは、特定のpost_idの文を指定して、削除しようとするときに使用できる関数です。 例えば、

delete_post_media( 111 );

上記の関数を実行すると、この親ID '111'に添付されているすべてのメディアが削除されます。


2のコメント

コメント

  1. こんにちは。 質問します。 メディアライブラリのファイルは削除できませんか? 写真、映像など... 投稿にあった写真、映像が見えなくなりますか?
    今、この質問する前にメディアライブラリにあるXNUMXつの画像を削除した記事の写真はそのままあり、何の変化がなかったのに。問題ないですか?

    応答