WooCommerce:出售时将特色产品设置为假

WooCommerce: set featured product as false when sold

我正在尝试在我的 WooCommerce 上添加一个片段,以在产品售出时将其从特色中删除。

我尝试了下面的代码,但它似乎不起作用。如有任何帮助,我们将不胜感激。

add_action('woocommerce_order_status_processing', 'order_status_processing_featured_products', 10, 2);
function order_status_processing_featured_products( $order_id, $order ) {
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        $product->set_featured(false);
        $product->save();
    }
}

那是因为你使用的钩子并不是每一个创建的订单都用到的,无论如何总是使用的钩子是woocommerce_thankyou

所以你得到:(通过附加代码中的注释进行解释)

function action_woocommerce_thankyou( $order_id ) {
    // Get $order object
    $order = wc_get_order( $order_id );
    
    // Loop through order items
    foreach ( $order->get_items() as $item_key => $item ) {
        // The WC_Product object
        $product = wc_get_product( $item['product_id'] );
            
        // Instanceof
        if ( $product instanceof WC_Product ) {
            // True
            if ( $product->get_featured() ) {               
                // Set featured false
                $product->set_featured( false );
                
                // Save
                $product->save();
            }
        }
    }
}
add_action( 'woocommerce_thankyou', 'action_woocommerce_thankyou', 10, 1 );