<?php if (sizeof($subscription->get_items()) > 0) { foreach ($subscription->get_items() as $item_id => $item) { $_product = apply_filters('woocommerce_subscriptions_order_item_product', $subscription->get_product_from_item($item), $item); $item_meta = wcs_get_order_item_meta($item, $_product); if (apply_filters('woocommerce_order_item_visible', true, $item)) { ?> <tr class="<?php echo esc_attr(apply_filters('woocommerce_order_item_class', 'order_item', $item, $subscription)); ?> "> <?php if ($allow_remove_item) { ?> <td class="remove_item"><a href="<?php echo esc_url(WCS_Remove_Item::get_remove_url($subscription->id, $item_id)); ?> " class="remove" onclick="return confirm('<?php printf(esc_html__('Are you sure you want remove this item from your subscription?', 'woocommerce-subscriptions')); ?> ');">×</a></td> <?php } ?> <td class="product-name"> <?php if ($_product && !$_product->is_visible()) { echo esc_html(apply_filters('woocommerce_order_item_name', $item['name'], $item)); } else { echo wp_kses_post(apply_filters('woocommerce_order_item_name', sprintf('<a href="%s">%s</a>', get_permalink($item['product_id']), $item['name']), $item)); }
/** * Validate the incoming request to either remove an item or add and item back to a subscription that was previously removed. * Add an descriptive notice to the page whether or not the request was validated or not. * * @since 2.0 * @param WC_Subscription $subscription * @param int $order_item_id * @param bool $undo_request bool * @return bool */ private static function validate_remove_items_request($subscription, $order_item_id, $undo_request = false) { $subscription_items = $subscription->get_items(); $response = false; if (!wp_verify_nonce($_GET['_wpnonce'], $_GET['subscription_id'])) { wc_add_notice(__('Security error. Please contact us if you need assistance.', 'woocommerce-subscriptions'), 'error'); } elseif (!current_user_can('edit_shop_subscription_line_items', $subscription->id)) { wc_add_notice(__('You cannot modify a subscription that does not belong to you.', 'woocommerce-subscriptions'), 'error'); } elseif (!$undo_request && !isset($subscription_items[$order_item_id])) { // only need to validate the order item id when removing wc_add_notice(__('You cannot remove an item that does not exist. ', 'woocommerce-subscriptions'), 'error'); } elseif (!$subscription->payment_method_supports('subscription_amount_changes')) { wc_add_notice(__('The item was not removed because this Subscription\'s payment method does not support removing an item.', 'woocommerce-subscriptions')); } else { $response = true; } return $response; } } WCS_Remove_Item::init();