本文整理汇总了PHP中WC_Subscriptions_Manager::subscription_requires_payment方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Subscriptions_Manager::subscription_requires_payment方法的具体用法?PHP WC_Subscriptions_Manager::subscription_requires_payment怎么用?PHP WC_Subscriptions_Manager::subscription_requires_payment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Subscriptions_Manager
的用法示例。
在下文中一共展示了WC_Subscriptions_Manager::subscription_requires_payment方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_my_subscriptions_template
/**
* Loads the my-subscriptions.php template on the My Account page.
*
* @since 1.0
*/
public static function get_my_subscriptions_template()
{
$subscriptions = WC_Subscriptions_Manager::get_users_subscriptions();
$user_id = get_current_user_id();
$all_actions = array();
foreach ($subscriptions as $subscription_key => $subscription_details) {
$actions = array();
if ($subscription_details['status'] == 'trash') {
unset($subscriptions[$subscription_key]);
continue;
}
$admin_with_suspension_disallowed = current_user_can('manage_woocommerce') && 0 == get_option(WC_Subscriptions_Admin::$option_prefix . '_max_customer_suspensions', 0) ? true : false;
if (WC_Subscriptions_Manager::can_subscription_be_changed_to('on-hold', $subscription_key, $user_id) && WC_Subscriptions_Manager::current_user_can_suspend_subscription($subscription_key) && !$admin_with_suspension_disallowed) {
$actions['suspend'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'on-hold'), 'name' => __('Suspend', 'woocommerce-subscriptions'));
} elseif (WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id) && !WC_Subscriptions_Manager::subscription_requires_payment($subscription_key, $user_id)) {
$actions['reactivate'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'active'), 'name' => __('Reactivate', 'woocommerce-subscriptions'));
}
if (WC_Subscriptions_Renewal_Order::can_subscription_be_renewed($subscription_key, $user_id)) {
$actions['renew'] = array('url' => WC_Subscriptions_Renewal_Order::get_users_renewal_link($subscription_key), 'name' => __('Renew', 'woocommerce-subscriptions'));
}
$renewal_orders = WC_Subscriptions_Renewal_Order::get_renewal_orders($subscription_details['order_id'], 'ID');
$last_order_id = end($renewal_orders);
if ($last_order_id) {
$renewal_order = new WC_Order($last_order_id);
if (WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id) && in_array($renewal_order->status, array('pending', 'failed')) && !is_numeric(get_post_meta($renewal_order->id, '_failed_order_replaced_by', true))) {
$actions['pay'] = array('url' => $renewal_order->get_checkout_payment_url(), 'name' => __('Pay', 'woocommerce-subscriptions'));
}
} else {
// Check if the master order still needs to be paid
$order = new WC_Order($subscription_details['order_id']);
if ('pending' == $order->status && WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id)) {
$actions['pay'] = array('url' => $order->get_checkout_payment_url(), 'name' => __('Pay', 'woocommerce-subscriptions'));
}
}
if (WC_Subscriptions_Manager::can_subscription_be_changed_to('cancelled', $subscription_key, $user_id) && $subscription_details['interval'] != $subscription_details['length']) {
$actions['cancel'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'cancelled'), 'name' => __('Cancel', 'woocommerce-subscriptions'));
}
$all_actions[$subscription_key] = $actions;
}
$all_actions = apply_filters('woocommerce_my_account_my_subscriptions_actions', $all_actions, $subscriptions);
woocommerce_get_template('myaccount/my-subscriptions.php', array('subscriptions' => $subscriptions, 'actions' => $all_actions, 'user_id' => $user_id), '', plugin_dir_path(__FILE__) . 'templates/');
}
示例2: maybe_change_users_subscription
/**
* Checks if the current request is by a user to change the status of their subscription, and if it is
* validate the subscription cancellation request and maybe processes the cancellation.
*
* @since 1.0
*/
public static function maybe_change_users_subscription()
{
global $woocommerce;
if (isset($_GET['change_subscription_to']) && isset($_GET['subscription_key']) && isset($_GET['_wpnonce'])) {
$user_id = get_current_user_id();
$subscription = self::get_users_subscription($user_id, $_GET['subscription_key']);
if (wp_verify_nonce($_GET['_wpnonce'], $_GET['subscription_key']) === false) {
$woocommerce->add_error(sprintf(__('That subscription can not be changed to %s. Please contact us if you need assistance.', WC_Subscriptions::$text_domain), $_GET['change_subscription_to']));
} elseif (empty($subscription)) {
$woocommerce->add_error(__('That doesn\'t appear to be one of your subscriptions.', WC_Subscriptions::$text_domain));
} elseif (!WC_Subscriptions_Manager::can_subscription_be_changed_to($_GET['change_subscription_to'], $_GET['subscription_key'], $user_id)) {
$woocommerce->add_error(sprintf(__('That subscription can not be changed to %s. Please contact us if you need assistance.', WC_Subscriptions::$text_domain), $_GET['change_subscription_to']));
} elseif (!in_array($_GET['change_subscription_to'], array('active', 'on-hold', 'cancelled'))) {
$woocommerce->add_error(sprintf(__('Unknown subscription status: "%s". Please contact us if you need assistance.', WC_Subscriptions::$text_domain), $_GET['change_subscription_to']));
} else {
switch ($_GET['change_subscription_to']) {
case 'active':
if (WC_Subscriptions_Manager::subscription_requires_payment($_GET['subscription_key'], $user_id)) {
$woocommerce->add_error(sprintf(__('You can not reactive that subscription until paying to renew it. Please contact us if you need assistance.', WC_Subscriptions::$text_domain), $_GET['change_subscription_to']));
} else {
self::reactivate_subscription($user_id, $_GET['subscription_key']);
$status_message = __('reactivated', WC_Subscriptions::$text_domain);
}
break;
case 'on-hold':
if (self::current_user_can_suspend_subscription($_GET['subscription_key'])) {
self::put_subscription_on_hold($user_id, $_GET['subscription_key']);
$status_message = __('suspended', WC_Subscriptions::$text_domain);
} else {
$woocommerce->add_error(sprintf(__('You can not suspend that subscription - the suspension limit has been reached. Please contact us if you need assistance.', WC_Subscriptions::$text_domain), $_GET['change_subscription_to']));
}
break;
case 'cancelled':
self::cancel_subscription($user_id, $_GET['subscription_key']);
$status_message = __('cancelled', WC_Subscriptions::$text_domain);
break;
}
if (isset($status_message)) {
$order = new WC_Order($subscription['order_id']);
$order->add_order_note(sprintf(__('The status of subscription %s was changed to %s by the subscriber from their account page.', WC_Subscriptions::$text_domain), $_GET['subscription_key'], $_GET['change_subscription_to']));
$woocommerce->add_message(sprintf(__('Your subscription has been %s.', WC_Subscriptions::$text_domain), $status_message));
}
}
wp_safe_redirect(get_permalink(woocommerce_get_page_id('myaccount')));
exit;
}
}
示例3: esc_url
?>
<?php
if (WC_Subscriptions_Manager::can_subscription_be_changed_to('on-hold', $subscription_key, $user_id)) {
?>
<a href="<?php
echo esc_url(WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'on-hold'));
?>
" class="on-hold" title="<?php
_e('Click to put this subscription on-hold', WC_Subscriptions::$text_domain);
?>
">(<?php
_e('Suspend', WC_Subscriptions::$text_domain);
?>
)</a>
<?php
} elseif (!WC_Subscriptions_Manager::subscription_requires_payment($subscription_key, $user_id) && WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id)) {
?>
<a href="<?php
echo esc_url(WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'active'));
?>
" class="activate" title="<?php
_e('Click to reactivate this subscription', WC_Subscriptions::$text_domain);
?>
">(<?php
_e('Reactivate', WC_Subscriptions::$text_domain);
?>
)</a>
<?php
}
?>
<?php