【发布时间】:2015-10-23 23:30:50
【问题描述】:
我正在运行带有订阅和帐户资金插件的 WooCommerce。
每次处理订阅付款时,我都需要向用户的个人资料中添加资金。
WooCommerce 订阅有 processed_subscription_payment 可以挂钩的操作。
Account Funds 会创建一个名为 account_funds 的用户元字段。
这是我到目前为止提出的代码,但它似乎不起作用。我正在使用 PayPal Sandbox 对其进行测试,但我认为他们现在遇到了问题。要么是那个,要么是我的代码不好。
add_action('processed_subscription_payment', 'custom_process_order', 10, 1);
function custom_process_order($order_id) {
global $woocommerce;
$order = new WC_Order( $order_id );
$myuser_id = (int)$order->user_id;
$amount = $order->get_order_total();
$funds = get_user_meta( $myuser_id, 'account_funds', true );
$funds = $funds ? $funds : 0;
$funds += floatval( $amount );
update_user_meta( $myuser_id, 'account_funds', $funds );
}
我正在尝试从每笔已处理的订阅付款中提取用户 ID,然后将资金添加到他们的帐户中。
这是我引用的用于帮助创建函数的 Account Funds 文件:http://pastebin.com/Teq8AXz8
这是我引用的订阅文档:http://docs.woothemes.com/document/subscriptions/develop/action-reference/
我似乎做错了什么?
【问题讨论】:
-
根据订阅文档
$order_if不是传递给处理钩子的两个参数之一。 -
哦,呵呵!它已经通过
$user_id,所以我不需要通过$ordfer_id获取用户ID。我会看看这是否有效。 -
@helgatheviking 我有点工作。当 $amount 设置为整数时,它将将该金额添加到 account_funds 元字段。这是一个示例:pastebin.com/u7dpk4Ct。但是,任何时候我尝试提取订单信息(我需要获取订单总额),我都会得到
Fatal error: Call to a member function get_total() on a non-object。我正在尝试调用wc_get_order()来获取订单ID,然后从中获取总数,但是它一直在拍摄该错误。我接近了吗?这是代码:pastebin.com/vHD0DWyT -
请编辑您的问题,而不是链接到 pastebin。该错误意味着
$order不是对象,因此您无法在其上运行get_total()。您尝试运行wc_get_order($order_id)但您没有订单ID。 -
您需要添加完整订单的总价还是订阅的价格?
标签: wordpress woocommerce subscriptions