【问题标题】:Woocommerce Subscription Cancel ButtonWoocommerce 订阅取消按钮
【发布时间】:2018-07-05 23:44:07
【问题描述】:

我正在编写一个函数,该函数将“取消”按钮添加到我的带有 woocommerce 订阅的订阅列表中。

问题是当我点击我得到错误:

安全错误。如果您需要帮助,请与我们联系。

我当前的代码是:

add_action('woocommerce_my_subscriptions_actions', 'cancelButton', 15);
function cancelButton( $subscription ) {
    $status = $subscription->get_status();
    $sub_id = $subscription->get_order_number();
    $cancel_url = wp_nonce_url( '?subscription_id=' . $sub_id . '&change_subscription_to=cancelled' );
    if ( $status == 'active' || $status == 'on-hold' || $status == 'pending' ) {
        echo '<a href="' . $cancel_url . '" class="button view" onclick="alert("Tem certeza que deseja cancelar sua assinatura?")">' .  __( 'Cancelar', 'starling' ) . '</a>';
    }
}

我也尝试了另一种方法,但是当下一个账单日期有日期时它不起作用。区别仅在“回声”内部。

echo '<a href="' . $subscription->get_cancel_order_url() . '" class="button view" onclick="alert("Tem certeza que deseja cancelar sua assinatura?")">' .  __( 'Cancelar', 'starling' ) . '</a>';

我找不到调用此按钮的正确方法,因此我尝试创建自己的按钮。

我仍在学习编码,因此可能还有很多改进的空间。 “onclick”警报也不起作用。

非常感谢任何帮助!

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    我终于找到了解决方案。

    看起来我在使用“wp_nonce_url”时遗漏了一些参数,woocommerce 订阅需要操作内的订阅 ID 和当前状态来验证请求,然后再处理它。

    我通过阅读 Woocommerce 订阅的核心并查看他们如何创建链接以及如何处理它们来理解这个逻辑。我还没有找到任何关于它的文档。

    wp_nonce_url( $url, $subscription_id . $current_status );
    

    所以我的代码现在看起来像这样......

    add_action('woocommerce_my_subscriptions_actions', 'cancelButton', 15);
    function cancelButton( $subscription ) {
        $current_status = $subscription->get_status();
        $subscription_id = $subscription->get_order_number();
        $subscription_url = $subscription->get_view_order_url();
        $cancel_url = $subscription_url . '?subscription_id=' . $subscription_id . '&change_subscription_to=cancelled';
        $cancel_subscription_url = wp_nonce_url( $cancel_url, $subscription_id . $current_status );
    
        if ( $current_status == 'active' || $current_status == 'on-hold' || $current_status == 'pending' ) {
            echo '<a href="' . $cancel_subscription_url . '" class="button view" onclick="alert("Tem certeza que deseja cancelar sua assinatura?")">' .  __( 'Cancelar', 'starling' ) . '</a>';
        }
    }
    

    我希望这对其他人也有帮助!

    【讨论】:

    • 你是如何得到 $subscription 对象的?
    猜你喜欢
    • 2014-07-27
    • 2019-07-19
    • 2013-02-09
    • 1970-01-01
    • 2020-12-20
    • 2021-11-09
    • 2021-01-11
    • 2018-01-02
    • 2017-09-07
    相关资源
    最近更新 更多