WPで画像を削除した時にwebp画像も削除する方法

アバター画像 adachi

6

こんにちは、KNAPの足立です。
前回の記事でWordPressの管理画面で画像をアップロードしたときに、同時にWebpを作成する方法を
書いたのですが、今回はWordPressの管理画面で画像を削除した時に同じ名前のWebp画像も削除する方法を書いていこうと思います!

前回の記事はこちら〜

実装はこちら

function delete_related_webp_images($post_ID) {
  $image_meta = wp_get_attachment_metadata($post_ID);
  if ($image_meta) {
    $image_path = get_attached_file($post_ID);
    $webp_path = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $image_path);
    if (file_exists($webp_path)) {
        unlink($webp_path);
    }
  }
}
add_action('delete_attachment', 'delete_related_webp_images');

delete_attachmentフックで削除した画像のIDを取得

add_action('delete_attachment', 'delete_related_webp_images');
 $image_meta = wp_get_attachment_metadata($post_ID);

まずwpの管理画面から画像などが削除された際に発火するdelete_attachmentフックで削除する画像のIDと画像情報を取得します。

画像情報の有無を判定し、webpのパスを生成

  if ($image_meta) {
    $image_path = get_attached_file($post_ID);
    $webp_path = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $image_path);

削除する画像情報が存在するかの判定を行い、存在する場合、今回はwebp画像を削除したいので
preg_replace関数でwebpのパスを作成します。

webp画像があればそれを削除

    if (file_exists($webp_path)) {
        unlink($webp_path);
    }

file_exists関数で先程作成したwebpのパス画像が残っている場合
unlink関数で削除します。

こんな感じです!
では本日はこのへんで〜

ありがとうございます!

アバター画像

ぽちっとおうえん!

シェア

  • Facebook
  • LINE
  • X
STUDIOとNotionをAPI連携してギャラリーサイトを作ってみた。連携方法やメリットを紹介