本文整理匯總了PHP中WC_Subscriptions_Manager::update_subscription方法的典型用法代碼示例。如果您正苦於以下問題:PHP WC_Subscriptions_Manager::update_subscription方法的具體用法?PHP WC_Subscriptions_Manager::update_subscription怎麽用?PHP WC_Subscriptions_Manager::update_subscription使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類WC_Subscriptions_Manager
的用法示例。
在下文中一共展示了WC_Subscriptions_Manager::update_subscription方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: maybe_complete_switch
/**
* After payment is completed on an order for switching a subscription, complete the switch.
*
* @param WC_Order|int $order A WC_Order object or ID of a WC_Order order.
* @since 1.4
*/
public static function maybe_complete_switch($order_id)
{
$original_subscription_key = get_post_meta($order_id, '_switched_subscription_key', true);
if (!empty($original_subscription_key)) {
$original_subscription = WC_Subscriptions_Manager::get_subscription($original_subscription_key);
$original_order = new WC_Order($original_subscription['order_id']);
if ('switched' !== $original_subscription['status']) {
// Don't send "Cancelled Subscription" email to admins
remove_action('cancelled_subscription', 'WC_Subscriptions_Email::send_subscription_email', 10, 2);
// Cancel the existing subscription
WC_Subscriptions_Manager::cancel_subscription($original_order->customer_user, $original_subscription_key);
add_action('cancelled_subscription', 'WC_Subscriptions_Email::send_subscription_email', 10, 2);
// Now set a custom status of "switched"
$original_subscription['status'] = 'switched';
WC_Subscriptions_Manager::update_subscription($original_subscription_key, $original_subscription);
wp_clear_scheduled_hook('scheduled_subscription_end_of_prepaid_term', array('user_id' => (int) $original_order->customer_user, 'subscription_key' => $original_subscription_key));
}
}
}
示例2: maybe_record_order_payment
/**
* Records the initial payment against a subscription.
*
* This function is called when a gateway calls @see WC_Order::payment_complete() and payment
* is completed on an order. It is also called when an orders status is changed to completed or
* processing for those gateways which never call @see WC_Order::payment_complete(), like the
* core WooCommerce Cheque and Bank Transfer gateways.
*
* It will also set the start date on the subscription to the time the payment is completed.
*
* @param WC_Order|int $order A WC_Order object or ID of a WC_Order order.
* @since 1.1.2
*/
public static function maybe_record_order_payment($order)
{
if (!is_object($order)) {
$order = new WC_Order($order);
}
$subscriptions_in_order = self::get_recurring_items($order);
foreach ($subscriptions_in_order as $subscription_item) {
$subscription_key = WC_Subscriptions_Manager::get_subscription_key($order->id, self::get_items_product_id($subscription_item));
$subscription = WC_Subscriptions_Manager::get_subscription($subscription_key);
// No payments have been recorded yet
if (empty($subscription['completed_payments'])) {
// Don't duplicate orders
remove_action('processed_subscription_payment', 'WC_Subscriptions_Renewal_Order::generate_paid_renewal_order', 10, 2);
WC_Subscriptions_Manager::update_subscription($subscription_key, array('start_date' => gmdate('Y-m-d H:i:s')));
WC_Subscriptions_Manager::process_subscription_payments_on_order($order->id);
WC_Subscriptions_Manager::safeguard_scheduled_payments($order->customer_user, $subscription_key);
// Make sure orders are still generated for other payments in the same request
add_action('processed_subscription_payment', 'WC_Subscriptions_Renewal_Order::generate_paid_renewal_order', 10, 2);
}
}
}