WooCommerce退款上的运行功能导致500错误

时间:2018-10-16 17:20:32

标签: php wordpress woocommerce hook custom-fields

我遇到了以下功能的问题。

我想做的是在WooCommerce中向客户退款时更新自定义字段,但是在应用退款时,这会在我的JavaScript控制台中引起500服务器错误通知,而且所需的更改也不会生效自定义字段不会更新。

也许我使用了错误的动作挂钩?

// Adjust custom field after refund

function adjust_tpv_after_refund( $order_id, $refund_id ) {
    $user_id = $order_id->get_user_id();
    $progress = get_the_author_meta( 'tier_progress_value', $user_id );
    $order = wc_get_order( $order_id );
    $refund_amount = $order->get_total_refunded();
    $adjusted_field = $progress - $refund_amount; 
    update_user_meta( $user_id, 'tier_progress_value', $adjusted_field );
}
add_action( 'woocommerce_order_fully_refunded', 'adjust_tpv_after_refund', 10, 2 );
add_action( 'woocommerce_order_partially_refunded', 'adjust_tpv_after_refund', 10, 2 );

控制台错误:

无法加载资源:服务器的状态为500(内部服务器错误)/wp-admin/admin-ajax.php?_fs_blog_admin=true:1

点击退款后,ajax微调器将不断旋转。

1 个答案:

答案 0 :(得分:4)

您正在$ order_id上调用get_user_id(),需要重新排序前三行,并将$order_id->get_user_id()替换为$order->get_user_id()

$order    = wc_get_order( $order_id );
$user_id  = $order->get_user_id();
$progress = get_the_author_meta( 'tier_progress_value', $user_id );