wp_delete_attachment()


WordPressのwp_delete_attachment()関数は、指定されたメディアファイル(添付ファイル)をデータベースとサーバーから削除するために使用されます。

構文

wp_delete_attachment( int $post_id, bool $force_delete = false );

引数の説明:

  • $post_id(int) — 削除する添付ファイルの投稿IDを指定します。
  • $force_delete(bool) — このパラメータがtrueの場合、ファイルはデータベースとサーバーから完全に削除されます。falseの場合、ゴミ箱に移動されます。

例1: 添付ファイルを完全に削除する

この例では、指定されたIDの添付ファイルを完全に削除します。

wp_delete_attachment(get_post_thumbnail_id(get_the_ID()), true);

例2: 添付ファイルをゴミ箱に移動する

この例では、指定されたIDの添付ファイルをゴミ箱に移動します。

wp_delete_attachment(get_post_thumbnail_id(get_the_ID()), false);

例3: 特定の投稿のすべての添付ファイルを削除する

この例では、特定の投稿に関連するすべての添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'post_parent' => get_the_ID())); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

例4: 特定のMIMEタイプの添付ファイルを削除する

この例では、特定のMIMEタイプ(例: image/jpeg)の添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'post_mime_type' => 'image/jpeg')); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

例5: 特定のユーザーがアップロードした添付ファイルを削除する

この例では、特定のユーザーがアップロードしたすべての添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'author' => 2)); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

例6: 特定の日付以前にアップロードされた添付ファイルを削除する

この例では、特定の日付以前にアップロードされた添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'date_query' => array(array('before' => '2023-01-01')))); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

例7: 特定のファイルサイズ以上の添付ファイルを削除する

この例では、特定のファイルサイズ以上の添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'meta_query' => array(array('key' => '_wp_attachment_metadata', 'value' => 's:5:"files";i:5000000;', 'compare' => '>=')))); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

例8: 特定のカテゴリの添付ファイルを削除する

この例では、特定のカテゴリに属する添付ファイルを削除します。

$attachments = get_posts(array('post_type' => 'attachment', 'posts_per_page' => -1, 'category_name' => 'uncategorized')); foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); }

注意点:

  • この関数を使用する際は、削除するファイルが重要なデータでないことを確認してください。
  • データベースのバックアップを取ってから操作することを推奨します。
  • 誤って重要なファイルを削除しないように、十分に注意してください。

関連機能: