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

アバター画像 adachi

7

こんにちは、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
jQueryを使わずにいい感じにページトップアニメーションとかページ内リンクをアニメーションさせる Swiperが動かない、動きはするけどカクついたり表示位置がズレたりする時の原因と対処法