WooCommerce Bookings中取消预订要用什么钩子?

问题描述 投票:1回答:1

我想做一个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 ); 
} 
php wordpress woocommerce user-data woocommerce-bookings
1个回答
0
投票

更新了。

正确的钩子应该是 woocommerce_booking_cancelled (一个复合钩子),它将允许您检索用户ID和Addupdate自定义用户元数据,如下面。

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 );
}

代码在您的活动子主题(或主题)的function.php文件中。经过测试和工作。


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

  • 进入您的数据库,在 wp_postmeta 表,以获得所需 meta_key 来自 post_id (即订票号)

  • 用这个 元键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动作和过滤器钩子开发者文档

© www.soinside.com 2019 - 2024. All rights reserved.