/** * Initialize shipping. */ public function __construct() { $this->enabled = wc_shipping_enabled(); if ($this->enabled) { $this->init(); } }
/** * Sees if the customer has entered enough data to calc the shipping yet. * * @return bool */ public function show_shipping() { if (!wc_shipping_enabled() || !is_array($this->cart_contents)) { return false; } if ('yes' === get_option('woocommerce_shipping_cost_requires_address')) { if (!WC()->customer->get_calculated_shipping()) { if (!WC()->customer->get_shipping_country() || !WC()->customer->get_shipping_state() && !WC()->customer->get_shipping_postcode()) { return false; } } } return apply_filters('woocommerce_cart_ready_to_calc_shipping', true); }
/** * Add this page to settings. */ public function add_settings_page($pages) { return wc_shipping_enabled() ? parent::add_settings_page($pages) : $pages; }
<?php if (!defined('ABSPATH')) { exit; } $settings = array(array('title' => __('Tax options', 'woocommerce'), 'type' => 'title', 'desc' => '', 'id' => 'tax_options'), array('title' => __('Prices entered with tax', 'woocommerce'), 'id' => 'woocommerce_prices_include_tax', 'default' => 'no', 'type' => 'radio', 'desc_tip' => __('This option is important as it will affect how you input prices. Changing it will not update existing products.', 'woocommerce'), 'options' => array('yes' => __('Yes, I will enter prices inclusive of tax', 'woocommerce'), 'no' => __('No, I will enter prices exclusive of tax', 'woocommerce'))), array('title' => __('Calculate tax based on', 'woocommerce'), 'id' => 'woocommerce_tax_based_on', 'desc_tip' => __('This option determines which address is used to calculate tax.', 'woocommerce'), 'default' => 'shipping', 'type' => 'select', 'class' => 'wc-enhanced-select', 'options' => array('shipping' => __('Customer shipping address', 'woocommerce'), 'billing' => __('Customer billing address', 'woocommerce'), 'base' => __('Shop base address', 'woocommerce'))), 'shipping-tax-class' => array('title' => __('Shipping tax class', 'woocommerce'), 'desc' => __('Optionally control which tax class shipping gets, or leave it so shipping tax is based on the cart items themselves.', 'woocommerce'), 'id' => 'woocommerce_shipping_tax_class', 'css' => 'min-width:150px;', 'default' => '', 'type' => 'select', 'class' => 'wc-enhanced-select', 'options' => array('' => __('Shipping tax class based on cart items', 'woocommerce'), 'standard' => __('Standard', 'woocommerce')) + $classes_options, 'desc_tip' => true), array('title' => __('Rounding', 'woocommerce'), 'desc' => __('Round tax at subtotal level, instead of rounding per line', 'woocommerce'), 'id' => 'woocommerce_tax_round_at_subtotal', 'default' => 'no', 'type' => 'checkbox'), array('title' => __('Additional tax classes', 'woocommerce'), 'desc_tip' => __('List additional tax classes below (1 per line). This is in addition to the default "Standard rate".', 'woocommerce'), 'id' => 'woocommerce_tax_classes', 'css' => 'width:100%; height: 65px;', 'type' => 'textarea', 'default' => sprintf(__('Reduced rate%sZero rate', 'woocommerce'), PHP_EOL)), array('title' => __('Display prices in the shop', 'woocommerce'), 'id' => 'woocommerce_tax_display_shop', 'default' => 'excl', 'type' => 'select', 'class' => 'wc-enhanced-select', 'options' => array('incl' => __('Including tax', 'woocommerce'), 'excl' => __('Excluding tax', 'woocommerce'))), array('title' => __('Display prices during cart and checkout', 'woocommerce'), 'id' => 'woocommerce_tax_display_cart', 'default' => 'excl', 'type' => 'select', 'class' => 'wc-enhanced-select', 'options' => array('incl' => __('Including tax', 'woocommerce'), 'excl' => __('Excluding tax', 'woocommerce')), 'autoload' => false), array('title' => __('Price display suffix', 'woocommerce'), 'id' => 'woocommerce_price_display_suffix', 'default' => '', 'placeholder' => __('N/A', 'woocommerce'), 'type' => 'text', 'desc_tip' => __('Define text to show after your product prices. This could be, for example, "inc. Vat" to explain your pricing. You can also have prices substituted here using one of the following: {price_including_tax}, {price_excluding_tax}.', 'woocommerce')), array('title' => __('Display tax totals', 'woocommerce'), 'id' => 'woocommerce_tax_total_display', 'default' => 'itemized', 'type' => 'select', 'class' => 'wc-enhanced-select', 'options' => array('single' => __('As a single total', 'woocommerce'), 'itemized' => __('Itemized', 'woocommerce')), 'autoload' => false), array('type' => 'sectionend', 'id' => 'tax_options')); if (!wc_shipping_enabled()) { unset($settings['shipping-tax-class']); } return apply_filters('woocommerce_tax_settings', $settings);
?> </h3> <a href="<?php echo esc_url(wc_get_endpoint_url('edit-address', $name)); ?> " class="edit"><?php _e('Edit', 'woocommerce'); ?> </a> </header> <address> <?php $address = apply_filters('woocommerce_my_account_my_address_formatted_address', array('first_name' => get_user_meta($customer_id, $name . '_first_name', true), 'last_name' => get_user_meta($customer_id, $name . '_last_name', true), 'company' => get_user_meta($customer_id, $name . '_company', true), 'address_1' => get_user_meta($customer_id, $name . '_address_1', true), 'address_2' => get_user_meta($customer_id, $name . '_address_2', true), 'city' => get_user_meta($customer_id, $name . '_city', true), 'state' => get_user_meta($customer_id, $name . '_state', true), 'postcode' => get_user_meta($customer_id, $name . '_postcode', true), 'country' => get_user_meta($customer_id, $name . '_country', true)), $customer_id, $name); $formatted_address = WC()->countries->get_formatted_address($address); if (!$formatted_address) { _e('You have not set up this type of address yet.', 'woocommerce'); } else { echo $formatted_address; } ?> </address> </div> <?php } ?> <?php if (!wc_ship_to_billing_address_only() && wc_shipping_enabled()) { echo '</div>'; }
function wc_get_customer_orders() { // Get all customer orders $customer_orders = get_posts(array('numberposts' => 4, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => wc_get_order_types(), 'post_status' => array_keys(wc_get_order_statuses()))); if ($customer_orders > 0) { $has_orders = 1; } else { $has_orders = 0; } do_action('woocommerce_before_account_orders', $has_orders); ?> <div class="pedidos"> <?php if ($has_orders) { ?> <h4>Pedidos Recentes</h4> <table class="woocommerce-MyAccount-orders shop_table shop_table_responsive my_account_orders account-orders-table"> <thead> <tr> <?php foreach (wc_get_account_orders_columns() as $column_id => $column_name) { ?> <th class="<?php echo esc_attr($column_id); ?> "><span class="nobr"><?php echo esc_html($column_name); ?> </span></th> <?php } ?> </tr> </thead> <tbody> <?php foreach ($customer_orders as $customer_order) { $order = wc_get_order($customer_order); $item_count = $order->get_item_count(); ?> <tr class="order"> <?php foreach (wc_get_account_orders_columns() as $column_id => $column_name) { ?> <td class="<?php echo esc_attr($column_id); ?> " data-title="<?php echo esc_attr($column_name); ?> "> <?php if (has_action('woocommerce_my_account_my_orders_column_' . $column_id)) { ?> <?php do_action('woocommerce_my_account_my_orders_column_' . $column_id, $order); ?> <?php } elseif ('order-number' === $column_id) { ?> <a href="<?php echo esc_url($order->get_view_order_url()); ?> "> <?php echo _x('#', 'hash before order number', 'woocommerce') . $order->get_order_number(); ?> </a> <?php } elseif ('order-date' === $column_id) { ?> <time datetime="<?php echo date('Y-m-d', strtotime($order->order_date)); ?> " title="<?php echo esc_attr(strtotime($order->order_date)); ?> "><?php echo date_i18n(get_option('date_format'), strtotime($order->order_date)); ?> </time> <?php } elseif ('order-status' === $column_id) { ?> <?php echo wc_get_order_status_name($order->get_status()); ?> <?php } elseif ('order-total' === $column_id) { ?> <?php echo sprintf(_n('%s for %s item', '%s for %s items', $item_count, 'woocommerce'), $order->get_formatted_order_total(), $item_count); ?> <?php } elseif ('order-actions' === $column_id) { ?> <?php $actions = array('pay' => array('url' => $order->get_checkout_payment_url(), 'name' => __('Pay', 'woocommerce')), 'view' => array('url' => $order->get_view_order_url(), 'name' => __('View', 'woocommerce')), 'cancel' => array('url' => $order->get_cancel_order_url(wc_get_page_permalink('myaccount')), 'name' => __('Cancel', 'woocommerce'))); if (!$order->needs_payment()) { unset($actions['pay']); } if (!in_array($order->get_status(), apply_filters('woocommerce_valid_order_statuses_for_cancel', array('pending', 'failed'), $order))) { unset($actions['cancel']); } if ($actions = apply_filters('woocommerce_my_account_my_orders_actions', $actions, $order)) { foreach ($actions as $key => $action) { echo '<a href="' . esc_url($action['url']) . '" class="button ' . sanitize_html_class($key) . '">' . esc_html($action['name']) . '</a>'; } } ?> <?php } ?> </td> <?php } ?> </tr> <?php } ?> </tbody> </table> <?php } else { ?> <div class="woocommerce-Message woocommerce-Message--info woocommerce-info"> <a class="woocommerce-Button button" href="<?php echo esc_url(apply_filters('woocommerce_return_to_shop_redirect', wc_get_page_permalink('shop'))); ?> "> <?php _e('Go Shop', 'woocommerce'); ?> </a> <?php _e('No order has been made yet.', 'woocommerce'); ?> </div> <?php } ?> <?php echo '<p><a href="' . esc_url(wc_get_endpoint_url('orders')) . '">Ver Todos</a></p>'; do_action('woocommerce_after_account_orders', $has_orders); $customer_id = get_current_user_id(); if (!wc_ship_to_billing_address_only() && wc_shipping_enabled()) { $get_addresses = apply_filters('woocommerce_my_account_get_addresses', array('billing' => __('Billing Address', 'woocommerce'), 'shipping' => __('Shipping Address', 'woocommerce')), $customer_id); } else { $get_addresses = apply_filters('woocommerce_my_account_get_addresses', array('billing' => __('Billing Address', 'woocommerce')), $customer_id); } $oldcol = 1; $col = 1; ?> <?php if (!wc_ship_to_billing_address_only() && wc_shipping_enabled()) { echo '<div class="u-columns woocommerce-Addresses col2-set addresses">'; } ?> <?php foreach ($get_addresses as $name => $title) { ?> <div class="u-column<?php echo ($col = $col * -1) < 0 ? 1 : 2; ?> col-<?php echo ($oldcol = $oldcol * -1) < 0 ? 1 : 2; ?> woocommerce-Address"> <header class="woocommerce-Address-title title"> <h3>Cadastro</h3> <a href="<?php echo esc_url(wc_get_endpoint_url('edit-address', $name)); ?> " class="edit"><?php _e('Edit', 'woocommerce'); ?> </a> </header> <address> <?php $address = apply_filters('woocommerce_my_account_my_address_formatted_address', array('first_name' => get_user_meta($customer_id, $name . '_first_name', true), 'last_name' => get_user_meta($customer_id, $name . '_last_name', true), 'company' => get_user_meta($customer_id, $name . '_company', true), 'address_1' => get_user_meta($customer_id, $name . '_address_1', true), 'address_2' => get_user_meta($customer_id, $name . '_address_2', true), 'city' => get_user_meta($customer_id, $name . '_city', true), 'state' => get_user_meta($customer_id, $name . '_state', true), 'postcode' => get_user_meta($customer_id, $name . '_postcode', true), 'country' => get_user_meta($customer_id, $name . '_country', true)), $customer_id, $name); $formatted_address = WC()->countries->get_formatted_address($address); if (!$formatted_address) { _e('You have not set up this type of address yet.', 'woocommerce'); } else { echo $formatted_address; } ?> </address> </div> <?php } ?> <?php if (!wc_ship_to_billing_address_only() && wc_shipping_enabled()) { echo '</div>'; } ?> </div><!-- pedidos --> <?php }
/** * Checks if an order needs display the shipping address, based on shipping method. * * @return boolean */ public function needs_shipping_address() { if (!wc_shipping_enabled()) { return false; } $hide = apply_filters('woocommerce_order_hide_shipping_address', array('local_pickup'), $this); $needs_address = false; foreach ($this->get_shipping_methods() as $shipping_method) { if (!in_array($shipping_method['method_id'], $hide)) { $needs_address = true; break; } } return apply_filters('woocommerce_order_needs_shipping_address', $needs_address, $hide, $this); }
/** * No shipping methods. */ public static function no_shipping_methods_notice() { if (wc_shipping_enabled() && (empty($_GET['page']) || empty($_GET['tab']) || 'wc-settings' !== $_GET['page'] || 'shipping' !== $_GET['tab'])) { global $wpdb; $product_count = wp_count_posts('product'); $method_count = wc_get_shipping_method_count(); if ($product_count->publish > 0 && 0 === $method_count) { include 'views/html-notice-no-shipping-methods.php'; } if ($method_count > 0) { self::remove_notice('no_shipping_methods'); } } }
/** * Checks if an order needs display the shipping address, based on shipping method. * * @return boolean */ public function needs_shipping_address() { if (!wc_shipping_enabled()) { return false; } $hide = apply_filters('woocommerce_order_hide_shipping_address', array('local_pickup'), $this); $needs_address = false; foreach ($this->get_shipping_methods() as $shipping_method) { // Remove any instance IDs after : $shipping_method_id = current(explode(':', $shipping_method['method_id'])); if (!in_array($shipping_method_id, $hide)) { $needs_address = true; break; } } return apply_filters('woocommerce_order_needs_shipping_address', $needs_address, $hide, $this); }
/** * Check whether a given request has permission to delete Shipping Zones. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|boolean */ public function delete_items_permissions_check($request) { if (!wc_shipping_enabled()) { return new WP_Error('rest_no_route', __('Shipping is disabled.', 'woocommerce'), array('status' => 404)); } if (!wc_rest_check_manager_permissions('settings', 'delete')) { return new WP_Error('woocommerce_rest_cannot_edit', __('Sorry, you are not allowed to delete this resource.', 'woocommerce'), array('status' => rest_authorization_required_code())); } return true; }
/** * No shipping methods. */ public function no_shipping_methods_notice() { if (wc_shipping_enabled() && (empty($_GET['page']) || empty($_GET['tab']) || 'wc-settings' !== $_GET['page'] || 'shipping' !== $_GET['tab'])) { global $wpdb; $product_count = wp_count_posts('product'); $method_count = absint($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}woocommerce_shipping_zone_methods")); if ($product_count->publish > 0 && 0 === $method_count) { include 'views/html-notice-no-shipping-methods.php'; } if ($method_count > 0) { self::remove_notice('no_shipping_methods'); } } }