我正在使用 WooCommerce 订阅插件,我想通过此操作挂钩更改自定义元字段:
woocommerce_subscription_renewal_payment_complete
我正在使用以下代码:
// Increase Diamond level by 1 on every successfull renewal
add_action('woocommerce_subscription_renewal_payment_complete', 'increment_level_on_successful_renewal', 10, 2);
function increment_level_on_successful_renewal($subscription, $order)
{
// Diamond level
$diamond_level = get_post_meta($subscription->ID, 'diamond_level') ? get_post_meta($subscription->ID, 'diamond_level')[0] : '';
// Check if exists
if ($diamond_level) {
// Diamond new level
$diamond_new_level = $diamond_level + 1;
// * This part not applied
// Increase Diamond's level by 1
update_post_meta($subscription->ID, 'diamond_level', $diamond_new_level);
// * This part works
// Subscription order
$sub_order = wc_get_order($subscription->ID);
// Custom note for the subscription
$note = __('The Diamond level has been increased to ' . $diamond_new_level, THEME);
// Add the note
$sub_order->add_order_note($note);
}
}
从上图中可以看出,这个自定义字段连接到shop_subscription 帖子类型。
钻石等级应该是3,但是这个钩子没有应用它。
我将以下没有挂钩的代码放入主题中,它按预期工作(增加到3)。
// Diamond level
$diamond_level = get_post_meta(87, 'diamond_level') ? get_post_meta(87, 'diamond_level')[0] : '';
// Check if exists
if ($diamond_level) {
// Diamond new level
$diamond_new_level = $diamond_level + 1;
// Increase Diamond's level by 1
update_post_meta(87, 'diamond_level', $diamond_new_level);
// Subscription order
$sub_order = wc_get_order(87);
// Custom note for the subscription
$note = __('The Diamond level has been increased to ' . $diamond_new_level, THEME);
// Add the note
$sub_order->add_order_note($note);
}