Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 取消订阅按钮_Wordpress_Woocommerce - Fatal编程技术网

Wordpress 取消订阅按钮

Wordpress 取消订阅按钮,wordpress,woocommerce,Wordpress,Woocommerce,我正在编写一个函数,该函数使用woocommerce订阅将“取消”按钮添加到我的订阅列表中 问题是,单击时会出现错误: 安全错误。如果您需要帮助,请联系我们 我目前的代码是: add_action('woocommerce_my_subscriptions_actions', 'cancelButton', 15); function cancelButton( $subscription ) { $status = $subscription->get_status();

我正在编写一个函数,该函数使用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>';
    }
}
add_action('woocommerce_my_subscriptions_actions','cancelButton',15);
功能取消按钮($subscription){
$status=$subscription->get_status();
$sub_id=$subscription->get_order_number();
$cancel_url=wp_nonce_url(“?subscription_id=”.$sub_id.&change_subscription_to=cancelled”);
如果($status=='active'| |$status=='on hold'| |$status=='pending'){
回声';
}
}
我也尝试过另一种方法,但当下一个账单日期有日期时,它不起作用。差异只存在于“回声”内部

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

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


非常感谢您的帮助

我终于找到了一个解决方案

看起来我在使用“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>';
    }
}
add_action('woocommerce_my_subscriptions_actions','cancelButton',15);
功能取消按钮($subscription){
$current_status=$subscription->get_status();
$subscription\u id=$subscription->get\u order\u number();
$subscription\u url=$subscription->get\u view\u order\u url();
$cancel\u url=$subscription\u url.'?subscription\u id='.$subscription\u id.'&将\u subscription\u更改为=cancelled';
$cancel\u subscription\u url=wp\u nonce\u url($cancel\u url,$subscription\u id.$current\u status);
如果($current_status=='active'| |$current_status=='on hold'| |$current_status=='pending'){
回声';
}
}

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

您是如何获得$subscription对象的?
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>';
    }
}