こんにちは、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関数で削除します。
こんな感じです!
では本日はこのへんで〜