【问题标题】:WooCommerce Bookings: Triggering AJAX Recalculation of Booking Cost on Product PageWooCommerce 预订:在产品页面上触发 AJAX 重新计算预订成本
【发布时间】:2020-03-05 21:20:14
【问题描述】:

我在 WooCommerce Bookings 中的 date-picker.php 模板中添加了几个新字段,当这些字段更新时,我需要在产品页面上触发 AJAX 重新计算预订成本。

目前,当 date-picker.php 中的标准字段更新时,会触发重新计算。但是,我将使用其他字段来重新计算持续时间和预订费用,因此我需要在对新字段进行更新时触发此 AJAX 重新计算。

如何触发 AJAX 重新计算?我曾尝试在其中一个标准字段上简单地触发 change 事件,但这似乎不起作用。

【问题讨论】:

  • 新字段的代码可以分享吗?我正在尝试这样做,但做不到。我不想使用像额外产品选项这样的插件。我想自己添加。谢谢。

标签: wordpress woocommerce woocommerce-bookings


【解决方案1】:

我有同样的问题。如果它在未来对某人有所帮助,这是我的工作:

转到 /wp-content/plugins/woocommerce-bookings/templates/single-product/add-to-cart/booking.php 这是单一产品预订表格的模板。 然后,您可以在 <div id="wc-bookings-booking-form"/>. 中移动其中一项操作,例如 <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>(或创建您自己的操作) 现在向此操作添加自定义字段或代码(我使用了 wc-fields-factory)。当您更改预订表单中的字段值时,将触发 AJAX 重新计算。 您可以在您的 functions.php 文件(在您的主题内)中挂钩此触发器,以根据您添加的自定义字段更改成本,如下所示:

add_filter( 'booking_form_calculated_booking_cost', 'my_booking_cost', 10, 3 );
function my_booking_cost( $booking_cost, $booking, $posted ) { 
/* use fields here to show a new booking cost*/
      $my_time = $posted[ <name of custom field> ]; //access field within booking form
     $booking_cost = 1; //whatever your calc is
     return $booking_cost;
}

【讨论】:

  • 请注意,在较新版本的 WooCommerce 预订插件中,此过滤器已被 woocommerce_bookings_calculated_booking_cost 过滤器取代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 2016-03-21
  • 2017-07-17
相关资源
最近更新 更多