【问题标题】:Woocommerce Booking Set Price Not WorkingWoocommerce 预订设置价格不起作用
【发布时间】:2021-07-12 15:40:58
【问题描述】:

您好,我一直在尝试通过代码创建 woocommerce 预订,我已成功创建预订并将其添加到用户的购物车中。问题是我无法设置预订价格。我尝试了多种解决方案,例如:

add_filter('woocommerce_add_cart_item', 'tsc_booking_woocommerce_add_cart_item', 99, 1);
function tsc_booking_woocommerce_add_cart_item($cart_item)
{
    try {
        session_start();
        if (!empty($cart_item['booking']) && isset($cart_item['booking'] 
        ['_cost']) && '' !== $cart_item['booking']['_cost']) {
            $cart_item['data']->set_price(100);
            $cart_item['custom_price'] = 100;
        }
        return $cart_item;
    } catch (Exception $e) {
        throw $e;
    }
}


add_filter('woocommerce_get_cart_item_from_session', 'tsc_booking_woocommerce_get_cart_item_from_session', 99, 3);
function  tsc_booking_woocommerce_get_cart_item_from_session($woo_data, $values, $key)
{
    if (!isset($woo_data['custom_price']) || empty($woo_data['custom_price'])) {
        return $woo_data;
    }
    $woo_data['data']->set_price($woo_data['custom_price']);
    return $woo_data;
}

add_filter('woocommerce_bookings_calculated_booking_cost', 'tsc_booking_woocommerce_bookings_calculated_booking_cost', 99, 3);
function tsc_booking_woocommerce_bookings_calculated_booking_cost($booking_cost, $booking, $posted)
    {
        try {
            return 100;
        } catch (Exception $e) {
            throw $e;
        }
    }

但它们似乎不起作用。

记录在案的解决方案是使用“woocommerce_before_calculate_totals”挂钩,但它不起作用。 我已经调试了代码,所有函数都被调用了,没有似乎没有任何错误。

add_action('woocommerce_before_calculate_totals', 'tsc_booking_woocommerce_before_calculate_totals', 1000, 1);
function tsc_booking_woocommerce_before_calculate_totals($cart)
{
    if (is_admin() && !defined('DOING_AJAX'))
        return;
    
    if (did_action('woocommerce_before_calculate_totals') >= 2)
        return;
    
    foreach ($cart->get_cart() as $cart_item) {
        $cart_item['data']->set_price(100);
    }
}

我很确定这对普通的 WC_Product 有效,对于 Booking 产品还有其他事情要做吗?

谢谢,

【问题讨论】:

  • 你/函数的钩子和回调在哪里?
  • add_action('woocommerce_before_calculate_totals', 'tsc_booking_woocommerce_before_calculate_totals', 1000, 1);
  • 请在您的问题中添加其他信息,与评论相反。你调试过你的功能吗?真的叫吗?

标签: woocommerce hook-woocommerce woocommerce-bookings


【解决方案1】:

我明白了……

以防万一有人像我一样头疼。

购物车中价格重置为 0 的原因是另一个插件“Woocommerce Membership”。该产品为会员提供了 100 欧元的折扣价,因为我使用的是 100 欧元的测试价格......两者加起来为 0。我猜会员插件在设置产品价格时的优先级较低。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2019-07-08
    • 2020-12-02
    • 2020-12-10
    • 1970-01-01
    • 2019-09-19
    相关资源
    最近更新 更多