本文整理汇总了PHP中WC_Subscriptions::is_woocommerce_pre_2_2方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Subscriptions::is_woocommerce_pre_2_2方法的具体用法?PHP WC_Subscriptions::is_woocommerce_pre_2_2怎么用?PHP WC_Subscriptions::is_woocommerce_pre_2_2使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Subscriptions
的用法示例。
在下文中一共展示了WC_Subscriptions::is_woocommerce_pre_2_2方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Create a simple subscription product object.
*
* @access public
* @param mixed $product
*/
public function __construct($product, $args = array())
{
parent::__construct($product, $args = array());
$this->parent_product_type = $this->product_type;
$this->product_type = 'subscription_variation';
$this->subscription_variation_level_meta_data = array('subscription_price' => 0, 'subscription_period' => '', 'subscription_period_interval' => 'day', 'subscription_length' => 0, 'subscription_trial_length' => 0, 'subscription_trial_period' => 'day', 'subscription_sign_up_fee' => 0, 'subscription_payment_sync_date' => 0);
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
// WC 2.1
// Convert selected subscription meta fields for easy access
foreach ($this->subscription_variation_level_meta_data as $meta_key => $default_value) {
if (!empty($this->product_custom_fields['_' . $meta_key][0])) {
$this->{$meta_key} = maybe_unserialize($this->product_custom_fields['_' . $meta_key][0]);
} else {
$this->{$meta_key} = $this->subscription_variation_level_meta_data[$meta_key];
}
}
} else {
$this->variation_level_meta_data = array_merge($this->variation_level_meta_data, $this->subscription_variation_level_meta_data);
}
}
开发者ID:Ezyva2015,项目名称:SMSF-Academy-Wordpress,代码行数:26,代码来源:class-wc-product-subscription-variation.php
示例2: save_subscription_form_fields
/**
* Settings are saved on a new instance of the PayPal payment gateway, not the global
* instance, so our admin fields are not set (nor saved). As a result, we need to run
* the save routine @see WC_Settings_API::process_admin_options() again to save our fields.
*
* @since 1.2.5
*/
public static function save_subscription_form_fields()
{
// WC 2.2 added its own API fields so this is no longer necessary
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
$paypal_gateway = WC_Subscriptions_Payment_Gateways::get_payment_gateway('paypal');
$paypal_gateway->process_admin_options();
}
}
示例3: get_cart_item_from_session
/**
* Restore renewal flag when cart is reset and modify Product object with
* renewal order related info
*
* @since 1.3
*/
public static function get_cart_item_from_session($session_data, $values, $key)
{
if (isset($values['subscription_renewal'])) {
$session_data['subscription_renewal'] = $values['subscription_renewal'];
// Need to get the original order price, not the current price
$original_order_id = $values['subscription_renewal']['original_order'];
$order_items = WC_Subscriptions_Order::get_recurring_items($original_order_id);
$first_order_item = reset($order_items);
$price = $first_order_item['subscription_recurring_amount'];
/*
* Modify the Cart $_product object.
* All the cart calculations and cart/checkout/mini-cart displays will use this object.
* So by modifying it here, we take care of all those cases.
*/
$_product = $session_data['data'];
$_product->price = $price;
// Don't carry over any sign up fee
$_product->subscription_sign_up_fee = 0;
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
$_product->product_custom_fields['_subscription_sign_up_fee'][0] = 0;
}
// Make sure the original subscription terms perisist
if ('parent' == $session_data['subscription_renewal']['role']) {
$_product->subscription_price = $price;
$_product->subscription_period = $first_order_item['subscription_period'];
$_product->subscription_period_interval = $first_order_item['subscription_interval'];
$_product->subscription_trial_period = $first_order_item['subscription_trial_period'];
$_product->subscription_length = $first_order_item['subscription_length'];
// Never give a free trial period again
$_product->subscription_trial_length = 0;
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
$_product->product_custom_fields['_subscription_price'][0] = $price;
$_product->product_custom_fields['_subscription_period'][0] = $first_order_item['subscription_period'];
$_product->product_custom_fields['_subscription_period_interval'][0] = $first_order_item['subscription_interval'];
$_product->product_custom_fields['_subscription_trial_period'][0] = $first_order_item['subscription_trial_period'];
$_product->product_custom_fields['_subscription_length'][0] = $first_order_item['subscription_length'];
$_product->product_custom_fields['_subscription_trial_length'][0] = 0;
}
}
$_product->post->post_title = apply_filters('woocommerce_subscriptions_renewal_product_title', $_product->get_title(), $_product);
// Make sure the same quantity is renewed
$session_data['quantity'] = $first_order_item['qty'];
}
return $session_data;
}
示例4: add_meta_boxes
/**
* Registers the "Renewal Orders" meta box for the "Edit Order" page.
*/
public static function add_meta_boxes()
{
global $current_screen, $post_id;
// Only display the meta box if an order relates to a subscription
if ('shop_order' == $current_screen->id) {
$order_contains_subscription = WC_Subscriptions_Order::order_contains_subscription($post_id);
if ($order_contains_subscription || WC_Subscriptions_Renewal_Order::is_renewal($post_id, array('order_role' => 'child'))) {
add_meta_box('subscription_renewal_orders', __('Related Subscription Orders', 'woocommerce-subscriptions'), __CLASS__ . '::related_orders_meta_box', 'shop_order', 'normal', 'default');
}
if ($order_contains_subscription || 'add' == $current_screen->action) {
if (!WC_Subscriptions::is_woocommerce_pre_2_2()) {
add_meta_box('woocommerce-order-totals', __('Recurring Totals', 'woocommerce-subscriptions'), __CLASS__ . '::recurring_totals_meta_box', 'shop_order', 'side', 'high');
} else {
// WC 2.1 compatibility
add_filter('woocommerce_admin_order_totals_after_shipping', 'WC_Subscriptions_Order::recurring_order_totals_meta_box_section', 100, 1);
}
}
}
}
示例5: generate_renewal_order
/**
* Creates a new order for renewing a subscription product based on the details of a previous order.
*
* No trial periods or sign up fees are applied to the renewal order. However, if the order has failed
* payments and the store manager has set failed payments to be added to renewal orders, then the
* orders totals will be set to include the outstanding balance.
*
* If the $args['new_order_role'] flag is set to 'parent', then the renewal order will supersede the existing
* order. The existing order and subscription associated with it will be cancelled. A new order and
* subscription will be created.
*
* If the $args['new_order_role'] flag is 'child', the $original_order will remain the master order for the
* subscription and the new order is just for accepting a recurring payment on the subscription.
*
* Renewal orders have the same meta data as the original order. If the renewal order is set to be a 'child'
* then any subscription related meta data will not be stored on the new order. This is to keep subscription
* meta data associated only with the one master order for the subscription.
*
* @param WC_Order|int $order The WC_Order object or ID of the order for which the a new order should be created.
* @param string $product_id The ID of the subscription product in the order which needs to be added to the new order.
* @param array $args (optional) An array of name => value flags:
* 'new_order_role' string A flag to indicate whether the new order should become the master order for the subscription. Accepts either 'parent' or 'child'. Defaults to 'parent' - replace the existing order.
* 'checkout_renewal' bool Indicates if invoked from an interactive cart/checkout session and certain order items are not set, like taxes, shipping as they need to be set in teh calling function, like @see WC_Subscriptions_Checkout::filter_woocommerce_create_order(). Default false.
* 'failed_order_id' int For checkout_renewal true, indicates order id being replaced
* @since 1.2
*/
public static function generate_renewal_order($original_order, $product_id, $args = array())
{
global $wpdb, $woocommerce;
if (!is_object($original_order)) {
$original_order = new WC_Order($original_order);
}
if (!WC_Subscriptions_Order::order_contains_subscription($original_order) || !WC_Subscriptions_Order::is_item_subscription($original_order, $product_id)) {
return false;
}
if (self::is_renewal($original_order, array('order_role' => 'child'))) {
$original_order = self::get_parent_order($original_order);
}
if (!is_array($args)) {
_deprecated_argument(__CLASS__ . '::' . __FUNCTION__, '1.3', __('Third parameter is now an array of name => value pairs. Use array( "new_order_role" => "parent" ) instead.', 'woocommerce-subscriptions'));
$args = array('new_order_role' => $args);
}
$args = wp_parse_args($args, array('new_order_role' => 'parent', 'checkout_renewal' => false));
$renewal_order_key = uniqid('order_');
// Create the new order
$renewal_order_data = array('post_type' => 'shop_order', 'post_title' => sprintf(__('Subscription Renewal Order – %s', 'woocommerce-subscriptions'), strftime(_x('%b %d, %Y @ %I:%M %p', 'Order date parsed by strftime', 'woocommerce-subscriptions'))), 'ping_status' => 'closed', 'post_excerpt' => $original_order->customer_note, 'post_author' => 1, 'post_password' => $renewal_order_key);
$create_new_order = true;
if (!WC_Subscriptions::is_woocommerce_pre_2_2()) {
// WC 2.2 order status
$renewal_order_data['post_status'] = 'wc-pending';
} else {
$renewal_order_data['post_status'] = 'publish';
}
if ('child' == $args['new_order_role']) {
$renewal_order_data['post_parent'] = $original_order->id;
}
if (true === $args['checkout_renewal']) {
$renewal_order_id = null;
if ($woocommerce->session->order_awaiting_payment > 0) {
$renewal_order_id = absint($woocommerce->session->order_awaiting_payment);
} elseif (isset($args['failed_order_id'])) {
$failed_order_id = $args['failed_order_id'];
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
// WC 2.1 - need to use taxonomy
/* Check order is unpaid by getting its status */
$terms = wp_get_object_terms($failed_order_id, 'shop_order_status', array('fields' => 'slugs'));
$order_status = isset($terms[0]) ? $terms[0] : 'pending';
} else {
// WC 2.2+
$failed_order = wc_get_order($failed_order_id);
$order_status = $failed_order->get_status();
}
/* If paying on a pending order, we are resuming */
if ($order_status == 'pending') {
$renewal_order_id = $failed_order_id;
}
}
if ($renewal_order_id) {
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
// WC 2.1 - need to use taxonomy
/* Check order is unpaid by getting its status */
$terms = wp_get_object_terms($renewal_order_id, 'shop_order_status', array('fields' => 'slugs'));
$order_status = isset($terms[0]) ? $terms[0] : 'pending';
} else {
// WC 2.2+
$existing_order = wc_get_order($renewal_order_id);
$order_status = $existing_order->get_status();
}
// Resume the unpaid order if its pending
if ($order_status == 'pending' || $order_status == 'failed') {
// Update the existing order as we are resuming it
$create_new_order = false;
$renewal_order_data['ID'] = $renewal_order_id;
wp_update_post($renewal_order_data);
// Clear the old line items - we'll add these again in case they changed
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE order_item_id IN ( SELECT order_item_id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d )", $renewal_order_id));
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d", $renewal_order_id));
}
}
}
//.........这里部分代码省略.........
示例6: recurring_order_totals_meta_box_section
/**
* Display recurring order totals on the "Edit Order" page.
*
* @param int $post_id The post ID of the shop_order post object.
* @since 1.2.4
* @return void
*/
public static function recurring_order_totals_meta_box_section($post_id)
{
global $woocommerce, $wpdb, $current_screen;
$order = new WC_Order($post_id);
$display_none = ' style="display: none"';
$contains_subscription = self::order_contains_subscription($order) ? true : false;
$chosen_gateway = WC_Subscriptions_Payment_Gateways::get_payment_gateway(get_post_meta($post_id, '_recurring_payment_method', true));
$manual_renewal = self::requires_manual_renewal($post_id);
$changes_supported = $chosen_gateway === false || $manual_renewal == 'true' || $chosen_gateway->supports('subscription_amount_changes') ? 'true' : 'false';
$data = get_post_meta($post_id);
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
?>
<div class="clear"></div>
</div>
<?php
}
?>
<div id="gateway_support"<?php
if (!$contains_subscription) {
echo $display_none;
}
?>
>
<input type="hidden" name="gateway_supports_subscription_changes" value="<?php
echo $changes_supported;
?>
">
<div class="error"<?php
if (!$contains_subscription || $changes_supported == 'true') {
echo $display_none;
}
?>
>
<p><?php
printf(__('The %s payment gateway is used to charge automatic subscription payments for this order. This gateway <strong>does not</strong> support changing a subscription\'s details.', 'woocommerce-subscriptions'), get_post_meta($post_id, '_recurring_payment_method_title', true));
?>
</p>
<p>
<?php
_e('It is strongly recommended you <strong>do not change</strong> any of the recurring totals or subscription item\'s details.', 'woocommerce-subscriptions');
?>
<a href="http://docs.woothemes.com/document/subscriptions/add-or-modify-a-subscription/#section-4"><?php
_e('Learn More', 'woocommerce-subscriptions');
?>
»</a>
</p>
</div>
</div>
<div id="recurring_order_totals"<?php
if (!$contains_subscription) {
echo $display_none;
}
?>
>
<?php
if (WC_Subscriptions::is_woocommerce_pre_2_2()) {
?>
<h3><?php
_e('Recurring Totals', 'woocommerce-subscriptions');
?>
</h3>
<?php
}
?>
<?php
if ('add' !== $current_screen->action) {
// Can't add recurring shipping to a manually added subscription
?>
<div class="totals_group">
<h4><span class="tax_total_display inline_total"></span><?php
_e('Shipping for Renewal Orders', 'woocommerce-subscriptions');
?>
</h4>
<div id="recurring_shipping_rows">
<?php
if (!WC_Subscriptions::is_woocommerce_pre_2_1()) {
if ($woocommerce->shipping()) {
$shipping_methods = $woocommerce->shipping->load_shipping_methods();
}
foreach (self::get_recurring_shipping_methods($order) as $item_id => $item) {
$chosen_method = $item['method_id'];
$shipping_title = $item['name'];
$shipping_cost = $item['cost'];
include plugin_dir_path(WC_Subscriptions::$plugin_file) . 'templates/admin/post-types/writepanels/order-shipping-html.php';
}
// Shipping created pre 2.1
if (isset($data['_recurring_shipping_method'])) {
$item_id = 'old';
// so that when saving, we know to delete the data in the old form
$chosen_method = !empty($data['_recurring_shipping_method'][0]) ? $data['_recurring_shipping_method'][0] : '';
$shipping_title = !empty($data['_recurring_shipping_method_title'][0]) ? $data['_recurring_shipping_method_title'][0] : '';
$shipping_cost = !empty($data['_order_recurring_shipping_total'][0]) ? $data['_order_recurring_shipping_total'][0] : '0.00';
//.........这里部分代码省略.........