我正在编写一个函数,为带有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”警报也不起作用。
我们非常感谢您的帮助!
答案 0 :(得分:0)
我终于找到了解决方案。
好像在使用“ 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>';
}
}
我希望这也会对其他人有所帮助!