コード例 #1
0
 /**
  * Initialize shipping.
  */
 public function __construct()
 {
     $this->enabled = wc_shipping_enabled();
     if ($this->enabled) {
         $this->init();
     }
 }
コード例 #2
0
 /**
  * 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);
 }
コード例 #3
0
 /**
  * Add this page to settings.
  */
 public function add_settings_page($pages)
 {
     return wc_shipping_enabled() ? parent::add_settings_page($pages) : $pages;
 }
コード例 #4
0
<?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);
コード例 #5
0
    ?>
</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>';
}
コード例 #6
0
ファイル: functions.php プロジェクト: willowmagrini/dg
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 
}
コード例 #7
0
 /**
  * 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);
 }
コード例 #8
0
 /**
  * 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');
         }
     }
 }
コード例 #9
0
 /**
  * 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;
 }
コード例 #11
0
 /**
  * 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');
         }
     }
 }