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 );
我正在尝试在我的 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 );