Xóa ảnh đại diện của bài viết trong wordpress và thư viện ảnh sản phẩm của WooCommerce khi xóa bài viết

Khi bạn xóa bài viết nhưng ảnh đại diện của bài viết vẫn còn. Khi xóa sản phẩm nhưng ảnh gallery bạn thêm vào cho sản phẩm vẫn còn tồn tại. Vậy làm sao để xóa các ảnh đó đồng thời khi xóa bài viết hoặc sản phẩm để tránh việc dư thừa dữ liệu và tốn tài nguyên.

  • Bản chất các ảnh đều là 1 trường dữ liệu dạng như bài viết trong wp.
  • Xóa ảnh tương đương với việc xóa dữ liệu bài viết với id của ảnh.
  • Nhưng không phải lúc nào xóa đi cũng là tốt. Nếu các bạn làm Seo thì không nên xóa cái này vì việc mất ảnh cũng tương đương việc các bạn mất đi 1 đường dẫn.
  • Nên cân nhắc kỹ trước xóa bất kỳ một tài nguyên gì một cách tự động. Nhất là đối với ảnh mà bạn tự tạo và đang đứng top trong tìm kiếm ảnh.

Dưới đây là câu lệnh thực hiện việc này

add_action('after_delete_post','Delete_images_post_featured_galleries',10,1);
function Delete_images_post_featured_galleries($post_id)
{
    /*
    * Bản chất các ảnh đều là 1 trường dữ liệu dạng như bài viết trong wp. 
    * Xóa ảnh tương đương với việc xóa dữ liệu bài viết với id của ảnh.
    * Nếu các bạn làm Seo thì không nên xóa cái này vì việc mất ảnh cũng tương đương việc các bạn mất đi 1 đường dẫn.
    */
    // Lấy id của ảnh đại diện lưu trong wp_meta
    $featured_id = get_post_meta($post_id,'_thumbnail_id',true);
    // Lấy danh sách id các ảnh galleries trong của sản phẩm tạo bởi WooCommerce
    $galleries_id = get_post_meta($post_id,'_product_image_gallery',true);
   if(!empty($featured_id))
   {
        //Xóa ảnh đại diện 
        wp_delete_post($featured_id);
   }
  if(!empty($galleries_id))
  {
    $galleries_id = split(',',$galleries_id);
    foreach($galleries_id as $image_id)
    {
        //Xóa ảnh đại diện thư viện
        wp_delete_post($image_id);
    }
  }
}

Leave a Reply