本文主要是介绍如何在woocommerce删除产品的同时删除产品图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
默认woocommerce删除产品的时候,产品图片是不会被删除的。为了节省服务器空间,我们有时候希望在删除产品的时候也能同时把产品图片删除。
方法是在functions里添加如下代码:
// Automatically Delete Woocommerce Images After Deleting a Product
add_action( 'before_delete_post', 'delete_product_images', 10, 1 );function delete_product_images( $post_id ) {// Check if user has the capability to delete productsif ( !current_user_can( 'delete_products' ) ) {return;}$product = wc_get_product( $post_id );if ( !$product ) {return;}$featured_image_id = $product->get_image_id();$image_galleries_id = $product->get_gallery_image_ids();if( !empty( $featured_image_id ) ) {$is_featured_image_used = is_image_used( $featured_image_id, $post_id );if ( !$is_featured_image_used ) {wp_delete_attachment( $featured_image_id, true );}}if( !empty( $image_galleries_id ) ) {foreach( $image_galleries_id as $single_image_id ) {$is_image_used = is_image_used( $single_image_id, $post_id );if ( !$is_image_used ) {wp_delete_attachment( $single_image_id, true );}}}
}function is_image_used( $image_id, $current_product_id ) {$query = new WP_Query( array('post_type' => 'product','post_status' => 'publish','meta_query' => array('relation' => 'OR',array('key' => '_thumbnail_id','value' => $image_id,'compare' => '='),array('key' => '_product_image_gallery','value' => '"'.$image_id.'"','compare' => 'LIKE')),'post__not_in' => array( $current_product_id ),'fields' => 'ids','posts_per_page' => -1) );return ( $query->have_posts() );
}
这篇关于如何在woocommerce删除产品的同时删除产品图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!