【问题标题】:What hook to be used for cancelled booking in WooCommerce Bookings?在 WooCommerce 预订中用于取消预订的挂钩是什么?
【发布时间】:2020-06-15 15:20:55
【问题描述】:

我正在尝试通过自定义插件在取消预订时运行 SQL 查询,以更新自定义用户元数据。

这是我的代码:

function wporg_callback() {
    global $wpdb;

    $wpdb->query("UPDATE usermeta SET meta_value = 15 WHERE umeta_id = 131");
}

add_action('woocommerce_bookings_cancelled_booking', 'wporg_callback');

但它不起作用。
查询有问题吗?是否没有使用正确的操作?


编辑 - 我还尝试了以下方法但没有成功:

add_action('woocommerce_bookings_cancelled_booking', 'wporg_callback'); 
function wporg_callback( $booking_id ) { 
    // Add/Update custom user meta data 
    update_user_meta( 2, 'download_credits', 17 ); 
} 

【问题讨论】:

  • 好的,在 usermeta 表中,对于 umeta_id 为 131 的行,我将 meta_value 更新为 15
  • 嗨,我正在尝试通过我构建的自定义插件来实现它。我听取了您的建议并将我的代码更新为以下内容:add_action('woocommerce_bookings_cancelled_booking', 'wporg_callback'); function wporg_callback( $booking_id ) { // 添加/更新自定义用户元数据 update_user_meta( 2, 'download_credits', 17 ); }
  • 我只是想检查 woocommerce_bookings_cancelled_booking 挂钩是否正在为我注册,但到目前为止它还没有工作。我已经仔细检查以确保 update_user_meta 的参数是正确的
  • 我在回复别人的 cmets,他们删除了。
  • 好的,无论如何你应该进一步澄清你的问题:你做了什么调试,“它不工作”是什么意思等等。

标签: php wordpress woocommerce user-data woocommerce-bookings


【解决方案1】:

更新:

要使用的正确钩子是woocommerce_booking_cancelled(一个复合钩子),它将允许您检索用户 ID 并添加/更新自定义用户元数据,如下所示:

add_action('woocommerce_booking_cancelled', 'booking_cancelled_transition_to_callback', 10, 2 );
function booking_cancelled_transition_to_callback( $booking_id, $booking ) {
    // Get the user ID from the Booking ID
    $user_id = get_post_field ('post_author', $booking_id);
    
    $download_credits = get_post_meta( $booking_id, '_booking_cost', true );
    
    // Add/Update custom user meta data
    update_user_meta( $user_id, 'download_credits', $download_credits );
}

代码在您的活动子主题(或主题)的functions.php 文件中。经过测试并且可以工作。


如何获取预订数据 (从订单中显示的预订ID)

  • 转到wp_postmeta 表下的数据库,从post_id(即预订ID)获取所需的meta_key

  • get_post_meta() WordPress 函数中使用该元键,例如:

     $meta_value = get_post_meta($booking_id, 'the_meta_key', true); 
    

注意事项:

  • 不需要 SQL 查询来添加/更新自定义用户元数据,因为您可以使用专用的 Wordpress 函数 update_user_meta()

  • 我无法使用 woocommerce_bookings_cancelled_booking 钩子使其工作。


WooCommerce Bookings action and filters hooks developer documentation

【讨论】:

  • 谢谢,我实际上在我的插件中使用它,但它似乎仍然有效。您是否知道我如何通过预订 ID 获取预订数据,特别是费用?
猜你喜欢
  • 2019-09-19
  • 2020-08-17
  • 2017-09-17
  • 1970-01-01
  • 2019-08-12
  • 2018-10-03
  • 2021-02-02
  • 2018-08-22
  • 2021-04-21
相关资源
最近更新 更多