0

我正在使用 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);
}
4

0 回答 0