Woocommerce 热卖产品不起作用

// 重置所有产品的销量统计
function reset_product_sales_counts() {
    global $wpdb;
    
    // 将所有产品的销量统计清零
    $wpdb->query( "UPDATE {$wpdb->postmeta} SET meta_value = 0 WHERE meta_key = 'total_sales'" );
    
    // 重新计算每个产品的销量
    $orders = get_posts( array(
        'post_type'      => 'shop_order',
        'post_status'    => array( 'wc-completed', 'wc-processing' ),
        'posts_per_page' => -1,
    ) );
    
    $processed_orders = 0;
    $failed_orders = array();
    
    foreach ( $orders as $order_post ) {
        $order = wc_get_order( $order_post->ID );
        
        // 检查订单是否有效
        if ( ! $order || ! is_a( $order, 'WC_Order' ) ) {
            $failed_orders[] = $order_post->ID;
            continue; // 跳过无效订单
        }
        
        foreach ( $order->get_items() as $item ) {
            $product_id = $item->get_product_id();
            $qty        = $item->get_quantity();
            
            // 更新产品销量
            $current_sales = get_post_meta( $product_id, 'total_sales', true );
            $new_sales     = (int) $current_sales + $qty;
            update_post_meta( $product_id, 'total_sales', $new_sales );
        }
        
        $processed_orders++;
    }
    
    // 输出执行结果
    $output = '产品销量统计已重置并重新计算。<br>';
    $output .= "成功处理订单: {$processed_orders}<br>";
    
    if ( ! empty( $failed_orders ) ) {
        $output .= "失败订单数量: " . count( $failed_orders ) . "<br>";
        $output .= "失败订单ID: " . implode( ', ', $failed_orders );
    }
    
    echo $output;
}
// 执行函数(注意:此操作会影响数据库,请先备份)
// reset_product_sales_counts();


// 访问特定 URL 时执行函数,例如:your-site.com/?reset_sales=true
if ( isset( $_GET['reset_sales'] ) && $_GET['reset_sales'] === 'true' ) {
    reset_product_sales_counts();
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值