猿问

保存或更新了 WooCommerce 库存的哪些挂钩

我正在创建一个活动票务 WordPress 主题,并且正在使用 WooCommerce 和高级自定义字段(ACF)插件。

我想更新一个名为事件的自定义帖子类型。具有特定门票的库存。这样我的客户就不需要查看 woo-commerce 产品页面,而只需打开一个“活动”

我尝试使用该update_post_meta挂钩,但只有当管理员在管理工具中更新产品时才有效。不是新订单。

function sync_product_stock( $meta_id, $post_id, $meta_key, $meta_value ) {

    $postType = get_post_type( $post_id );

    if ($postType  == 'product' ) {

        if ( $meta_key == '_stock' ) {

            $product = wc_get_product( $post_id );

            $eventId = $product->get_attribute( 'event_id' );

            $productName = $product->get_name();

            if ($productName.include('Early Bird')) {

                update_field( 'event_early_bird_group_event_early_bird_amount_of_tickets', $meta_value, $eventId );

            } else if ($productName.include('Regular')) {

                update_field( 'event_regular_group_event_regular_amount_of_tickets', $meta_value, $eventId );

            } else if ($productName.include('Member')) {

                // nothing needs to be updated

            }

        }

    }

}

add_action( 'updated_post_meta', 'sync_product_stock', 10, 4);

_stock当字段更新时我如何收到通知?(我不想自己处理库存


互换的青春
浏览 97回答 1
1回答

慕标5832272

您的代码中有一些错误。使用 woocommerce 挂钩尝试以下操作:// On processed update product stock eventadd_action( 'woocommerce_updated_product_stock', 'wc_updated_product_stock_callback' );// On admin single product creation/updateadd_action( 'woocommerce_process_product_meta', 'wc_updated_product_stock_callback' );// On admin single product variation creation/updateadd_action( 'woocommerce_save_product_variation', 'wc_updated_product_stock_callback' );function wc_updated_product_stock_callback( $product_id ) {    // get an instance of the WC_Product Object    $product      = wc_get_product( $product_id );    $stock_qty    = $product->get_stock_quantity();    $event_id     = $product->get_attribute('event_id');    $product_name = $product->get_name();    if ( strpos($product_name, 'Early Bird') !== false ) {        update_field( 'event_early_bird_group_event_early_bird_amount_of_tickets', $stock_qty, $event_id );    } elseif ( strpos($product_name, 'Regular') !== false ) {        update_field( 'event_regular_group_event_regular_amount_of_tickets', $stock_qty, $event_id );    } elseif ( strpos($product_name, 'Member') !== false ) {        // nothing needs to be updated    }}代码位于活动子主题(或活动主题)的 function.php 文件中。它应该有效。
随时随地看视频慕课网APP
我要回答