예제 #1
0
			<th class="product-name"><?php 
esc_html_e('Product', 'woocommerce-subscriptions');
?>
</th>
			<th class="product-total"><?php 
esc_html_e('Total', 'woocommerce-subscriptions');
?>
</th>
		</tr>
	</thead>
	<tbody>
		<?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'));
                ?>
    /**
     * Output custom columns for subscriptions
     * @param  string $column
     */
    public function render_shop_subscription_columns($column)
    {
        global $post, $the_subscription, $wp_list_table;
        if (empty($the_subscription) || $the_subscription->id != $post->ID) {
            $the_subscription = wcs_get_subscription($post->ID);
        }
        $column_content = '';
        switch ($column) {
            case 'status':
                // The status label
                $column_content = sprintf('<mark class="%s tips" data-tip="%s">%s</mark>', sanitize_title($the_subscription->get_status()), wcs_get_subscription_status_name($the_subscription->get_status()), wcs_get_subscription_status_name($the_subscription->get_status()));
                $post_type_object = get_post_type_object($post->post_type);
                $actions = array();
                $action_url = add_query_arg(array('post' => $the_subscription->id, '_wpnonce' => wp_create_nonce('bulk-posts')));
                if (isset($_REQUEST['status'])) {
                    $action_url = add_query_arg(array('status' => $_REQUEST['status']), $action_url);
                }
                $all_statuses = array('active' => __('Reactivate', 'woocommerce-subscriptions'), 'on-hold' => __('Suspend', 'woocommerce-subscriptions'), 'cancelled' => _x('Cancel', 'an action on a subscription', 'woocommerce-subscriptions'), 'trash' => __('Trash', 'woocommerce-subscriptions'), 'deleted' => __('Delete Permanently', 'woocommerce-subscriptions'));
                foreach ($all_statuses as $status => $label) {
                    if ($the_subscription->can_be_updated_to($status)) {
                        if (in_array($status, array('trash', 'deleted'))) {
                            if (current_user_can($post_type_object->cap->delete_post, $post->ID)) {
                                if ('trash' == $post->post_status) {
                                    $actions['untrash'] = '<a title="' . esc_attr(__('Restore this item from the Trash', 'woocommerce-subscriptions')) . '" href="' . wp_nonce_url(admin_url(sprintf($post_type_object->_edit_link . '&amp;action=untrash', $post->ID)), 'untrash-post_' . $post->ID) . '">' . __('Restore', 'woocommerce-subscriptions') . '</a>';
                                } elseif (EMPTY_TRASH_DAYS) {
                                    $actions['trash'] = '<a class="submitdelete" title="' . esc_attr(__('Move this item to the Trash', 'woocommerce-subscriptions')) . '" href="' . get_delete_post_link($post->ID) . '">' . __('Trash', 'woocommerce-subscriptions') . '</a>';
                                }
                                if ('trash' == $post->post_status || !EMPTY_TRASH_DAYS) {
                                    $actions['delete'] = '<a class="submitdelete" title="' . esc_attr(__('Delete this item permanently', 'woocommerce-subscriptions')) . '" href="' . get_delete_post_link($post->ID, '', true) . '">' . __('Delete Permanently', 'woocommerce-subscriptions') . '</a>';
                                }
                            }
                        } else {
                            if ('pending-cancel' === $the_subscription->get_status()) {
                                $label = __('Cancel Now', 'woocommerce-subscriptions');
                            }
                            $actions[$status] = sprintf('<a href="%s">%s</a>', add_query_arg('action', $status, $action_url), $label);
                        }
                    }
                }
                if ('pending' === $the_subscription->get_status()) {
                    unset($actions['active']);
                    unset($actions['trash']);
                } elseif (!in_array($the_subscription->get_status(), array('cancelled', 'pending-cancel', 'expired', 'switched', 'suspended'))) {
                    unset($actions['trash']);
                }
                $actions = apply_filters('woocommerce_subscription_list_table_actions', $actions, $the_subscription);
                $column_content .= $wp_list_table->row_actions($actions);
                $column_content = apply_filters('woocommerce_subscription_list_table_column_status_content', $column_content, $the_subscription, $actions);
                break;
            case 'order_title':
                $customer_tip = '';
                if ($address = $the_subscription->get_formatted_billing_address()) {
                    $customer_tip .= _x('Billing:', 'meaning billing address', 'woocommerce-subscriptions') . ' ' . esc_html($address);
                }
                if ($the_subscription->billing_email) {
                    // translators: placeholder is customer's billing email
                    $customer_tip .= '<br/><br/>' . sprintf(__('Email: %s', 'woocommerce-subscriptions'), esc_attr($the_subscription->billing_email));
                }
                if ($the_subscription->billing_phone) {
                    // translators: placeholder is customer's billing phone number
                    $customer_tip .= '<br/><br/>' . sprintf(__('Tel: %s', 'woocommerce-subscriptions'), esc_html($the_subscription->billing_phone));
                }
                if (!empty($customer_tip)) {
                    echo '<div class="tips" data-tip="' . esc_attr($customer_tip) . '">';
                }
                // This is to stop PHP from complaining
                $username = '';
                if ($the_subscription->get_user_id() && false !== ($user_info = get_userdata($the_subscription->get_user_id()))) {
                    $username = '******' . absint($user_info->ID) . '">';
                    if ($the_subscription->billing_first_name || $the_subscription->billing_last_name) {
                        $username .= esc_html(ucfirst($the_subscription->billing_first_name) . ' ' . ucfirst($the_subscription->billing_last_name));
                    } elseif ($user_info->first_name || $user_info->last_name) {
                        $username .= esc_html(ucfirst($user_info->first_name) . ' ' . ucfirst($user_info->last_name));
                    } else {
                        $username .= esc_html(ucfirst($user_info->display_name));
                    }
                    $username .= '</a>';
                } elseif ($the_subscription->billing_first_name || $the_subscription->billing_last_name) {
                    $username = trim($the_subscription->billing_first_name . ' ' . $the_subscription->billing_last_name);
                }
                // translators: $1: is opening link, $2: is subscription order number, $3: is closing link tag, $4: is user's name
                $column_content = sprintf(_x('%1$s#%2$s%3$s for %4$s', 'Subscription title on admin table. (e.g.: #211 for John Doe)', 'woocommerce-subscriptions'), '<a href="' . esc_url(admin_url('post.php?post=' . absint($post->ID) . '&action=edit')) . '">', '<strong>' . esc_attr($the_subscription->get_order_number()) . '</strong>', '</a>', $username);
                $column_content .= '</div>';
                $column_content .= '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __('Show more details', 'woocommerce-subscriptions') . '</span></button>';
                break;
            case 'order_items':
                // Display either the item name or item count with a collapsed list of items
                $subscription_items = $the_subscription->get_items();
                switch (count($subscription_items)) {
                    case 0:
                        $column_content .= '&ndash;';
                        break;
                    case 1:
                        foreach ($subscription_items as $item) {
                            $_product = apply_filters('woocommerce_order_item_product', $the_subscription->get_product_from_item($item), $item);
                            $item_meta = wcs_get_order_item_meta($item, $_product);
                            $item_meta_html = $item_meta->display(true, true);
                            $item_quantity = absint($item['qty']);
                            $item_name = '';
                            if (wc_product_sku_enabled() && $_product && $_product->get_sku()) {
                                $item_name .= $_product->get_sku() . ' - ';
                            }
                            $item_name .= $item['name'];
                            $item_name = apply_filters('woocommerce_order_item_name', $item_name, $item);
                            $item_name = esc_html($item_name);
                            if ($item_quantity > 1) {
                                $item_name = sprintf('%s &times; %s', absint($item_quantity), $item_name);
                            }
                            if ($_product) {
                                $item_name = sprintf('<a href="%s">%s</a>', get_edit_post_link($_product->id), $item_name);
                            }
                            ob_start();
                            ?>
							<div class="order-item">
								<?php 
                            echo wp_kses($item_name, array('a' => array('href' => array())));
                            ?>
								<?php 
                            if ($item_meta_html) {
                                ?>
								<a class="tips" href="#" data-tip="<?php 
                                echo esc_attr($item_meta_html);
                                ?>
">[?]</a>
								<?php 
                            }
                            ?>
							</div>
							<?php 
                            $column_content .= ob_get_clean();
                        }
                        break;
                    default:
                        $column_content .= '<a href="#" class="show_order_items">' . esc_html(apply_filters('woocommerce_admin_order_item_count', sprintf(_n('%d item', '%d items', $the_subscription->get_item_count(), 'woocommerce-subscriptions'), $the_subscription->get_item_count()), $the_subscription)) . '</a>';
                        $column_content .= '<table class="order_items" cellspacing="0">';
                        foreach ($the_subscription->get_items() as $item) {
                            $_product = apply_filters('woocommerce_order_item_product', $the_subscription->get_product_from_item($item), $item);
                            $item_meta = wcs_get_order_item_meta($item, $_product);
                            $item_meta_html = $item_meta->display(true, true);
                            ob_start();
                            ?>
							<tr class="<?php 
                            echo esc_attr(apply_filters('woocommerce_admin_order_item_class', '', $item));
                            ?>
">
								<td class="qty"><?php 
                            echo absint($item['qty']);
                            ?>
</td>
								<td class="name">
									<?php 
                            if (wc_product_sku_enabled() && $_product && $_product->get_sku()) {
                                echo esc_html($_product->get_sku()) . ' - ';
                            }
                            echo esc_html(apply_filters('woocommerce_order_item_name', $item['name'], $item));
                            if ($item_meta_html) {
                                ?>
										<a class="tips" href="#" data-tip="<?php 
                                echo esc_attr($item_meta_html);
                                ?>
">[?]</a>
									<?php 
                            }
                            ?>
								</td>
							</tr>
							<?php 
                            $column_content .= ob_get_clean();
                        }
                        $column_content .= '</table>';
                        break;
                }
                break;
            case 'recurring_total':
                $column_content .= esc_html(strip_tags($the_subscription->get_formatted_order_total()));
                // translators: placeholder is the display name of a payment gateway a subscription was paid by
                $column_content .= '<small class="meta">' . esc_html(sprintf(__('Via %s', 'woocommerce-subscriptions'), $the_subscription->get_payment_method_to_display())) . '</small>';
                break;
            case 'start_date':
            case 'trial_end_date':
            case 'next_payment_date':
            case 'last_payment_date':
            case 'end_date':
                if (0 == $the_subscription->get_time($column, 'gmt')) {
                    $column_content .= '-';
                } else {
                    $column_content .= sprintf('<time class="%s" title="%s">%s</time>', esc_attr($column), esc_attr(date(__('Y/m/d g:i:s A', 'woocommerce-subscriptions'), $the_subscription->get_time($column, 'site'))), esc_html($the_subscription->get_date_to_display($column)));
                    if ('next_payment_date' == $column && $the_subscription->payment_method_supports('gateway_scheduled_payments') && !$the_subscription->is_manual() && $the_subscription->has_status('active')) {
                        $column_content .= '<div class="woocommerce-help-tip" data-tip="' . esc_attr__('This date should be treated as an estimate only. The payment gateway for this subscription controls when payments are processed.', 'woocommerce-subscriptions') . '"></div>';
                    }
                }
                $column_content = $column_content;
                break;
            case 'orders':
                $column_content .= $this->get_related_orders_link($the_subscription);
                break;
        }
        echo wp_kses(apply_filters('woocommerce_subscription_list_table_column_content', $column_content, $the_subscription, $column), array('a' => array('class' => array(), 'href' => array(), 'data-tip' => array(), 'title' => array()), 'time' => array('class' => array(), 'title' => array()), 'mark' => array('class' => array(), 'data-tip' => array()), 'small' => array('class' => array()), 'table' => array('class' => array(), 'cellspacing' => array(), 'cellpadding' => array()), 'tr' => array('class' => array()), 'td' => array('class' => array()), 'div' => array('class' => array(), 'data-tip' => array()), 'br' => array(), 'strong' => array(), 'span' => array('class' => array()), 'p' => array('class' => array()), 'button' => array('type' => array(), 'class' => array())));
    }