2

我正在尝试通过自定义插件在取消预订时运行 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 ); 
} 
4

1 回答 1

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表下的数据库以获取所需meta_keypost_id(即预订 ID)

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

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

笔记:

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

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


WooCommerce 预订操作和过滤器挂钩开发人员文档

于 2020-06-15T16:24:33.730 回答