【问题标题】:Remove product image when deleting product WooCommerce删除产品 WooCommerce 时删除产品图片
【发布时间】:2022-06-22 01:07:03
【问题描述】:

我正在使用 sql 语句自动删除所有缺货产品(我在 StackOverFlow 上的另一个问题中看到了示例)。 这将从数据库中删除产品,但将图像保留在媒体库中。 有没有办法删除图片?

代码:

function remove_out_of_stock_status(){   
   global $wpdb;

    $results = $wpdb->get_results( "
    DELETE p FROM {$wpdb->prefix}posts p 
    join {$wpdb->prefix}postmeta pm 
    on p.ID = pm.post_id 
    WHERE p.post_type = 'product' 
    and pm.meta_key = '_stock_status' 
    and pm.meta_value = 'outofstock'
" );
  }
  add_action( 'init', 'remove_out_of_stock_status', 10, 1 );

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您可以使用before_delete_post钩子删除产品图片,如果产品被永久删除。

    add_action('before_delete_post', 'delete_thumbnail_before_delete_post');
    function delete_thumbnail_before_delete_post($post_id) {
        $post = get_post($post_id);
        if ($post->post_type === 'product') {
            $thumb_id = get_post_thumbnail_id($post_id);
            if ($thumb_id) {
                wp_delete_attachment($thumb_id, true);
            }
        }
    }
    

    上面的代码对我来说很好用!

    【讨论】:

    • 我相信这只有在我手动删除帖子时才有效(我试过了,但图像仍然存在)。
    • @DánielMozsár 是的,这只会在您从管理员中手动删除帖子时触发。这个 sn-p 对我有用。但是您可以使用另一个挂钩而不是原始 SQL 查询,这将在产品缺货后立即删除您的产品。我认为这将是最安全的方式。如果您有兴趣,那么我可以测试并分享该 sn-p。
    【解决方案2】:

    如果我在我的子主题的函数文件中使用此代码,当我从垃圾箱中清空产品时,它是否也会删除所有产品图像?

    非常感谢!

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 2014-04-06
      相关资源
      最近更新 更多