本文整理汇总了PHP中WC_Tax::calc_exclusive_tax方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Tax::calc_exclusive_tax方法的具体用法?PHP WC_Tax::calc_exclusive_tax怎么用?PHP WC_Tax::calc_exclusive_tax使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Tax
的用法示例。
在下文中一共展示了WC_Tax::calc_exclusive_tax方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: widget
/**
* Output widget.
*
* @see WP_Widget
*
* @param array $args
* @param array $instance
*/
public function widget($args, $instance)
{
global $wp, $wp_the_query;
if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
return;
}
if (!$wp_the_query->post_count) {
return;
}
$min_price = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : '';
$max_price = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : '';
wp_enqueue_script('wc-price-slider');
// Find min and max price in current result set
$prices = $this->get_filtered_price();
$min = floor($prices->min_price);
$max = ceil($prices->max_price);
if ($min === $max) {
return;
}
$this->widget_start($args, $instance);
if ('' === get_option('permalink_structure')) {
$form_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
} else {
$form_action = preg_replace('%\\/page/[0-9]+%', '', home_url(trailingslashit($wp->request)));
}
/**
* Adjust max if the store taxes are not displayed how they are stored.
* Min is left alone because the product may not be taxable.
* Kicks in when prices excluding tax are displayed including tax.
*/
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
$class_max = $max;
foreach ($tax_classes as $tax_class) {
if ($tax_rates = WC_Tax::get_rates($tax_class)) {
$class_max = $max + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($max, $tax_rates));
}
}
$max = $class_max;
}
echo '<form method="get" action="' . esc_url($form_action) . '">
<div class="price_slider_wrapper">
<div class="price_slider" style="display:none;"></div>
<div class="price_slider_amount">
<input type="text" id="min_price" name="min_price" value="' . esc_attr($min_price) . '" data-min="' . esc_attr(apply_filters('woocommerce_price_filter_widget_min_amount', $min)) . '" placeholder="' . esc_attr__('Min price', 'woocommerce') . '" />
<input type="text" id="max_price" name="max_price" value="' . esc_attr($max_price) . '" data-max="' . esc_attr(apply_filters('woocommerce_price_filter_widget_max_amount', $max)) . '" placeholder="' . esc_attr__('Max price', 'woocommerce') . '" />
<button type="submit" class="button">' . __('Filter', 'woocommerce') . '</button>
<div class="price_label" style="display:none;">
' . __('Price:', 'woocommerce') . ' <span class="from"></span> — <span class="to"></span>
</div>
' . wc_query_string_form_fields(null, array('min_price', 'max_price'), '', true) . '
<div class="clear"></div>
</div>
</div>
</form>';
$this->widget_end($args);
}
示例2: price_filter_meta_query
/**
* Return a meta query for filtering by price.
* @return array
*/
private function price_filter_meta_query()
{
if (isset($_GET['max_price']) || isset($_GET['min_price'])) {
$min = isset($_GET['min_price']) ? floatval($_GET['min_price']) : 0;
$max = isset($_GET['max_price']) ? floatval($_GET['max_price']) : 9999999999.0;
/**
* Adjust if the store taxes are not displayed how they are stored.
* Max is left alone because the filter was already increased.
* Kicks in when prices excluding tax are displayed including tax.
*/
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
$class_min = $min;
foreach ($tax_classes as $tax_class) {
if ($tax_rates = WC_Tax::get_rates($tax_class)) {
$class_min = $min - WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($min, $tax_rates));
}
}
$min = $class_min;
}
return array('key' => '_price', 'value' => array($min, $max), 'compare' => 'BETWEEN', 'type' => 'DECIMAL', 'price_filter' => true);
}
return array();
}
示例3: getPriceRange
/**
* Get Price Range for given product ids.
* If filtered is true then return price range for filtered products,
* otherwise return price range for all products.
*
* @param boolean $filtered
* @return array
*/
public function getPriceRange($filtered = true)
{
if ($filtered === true) {
$price_range = $this->filteredProductsPriceRange();
} else {
$price_range = $this->unfilteredProductsPriceRange();
}
if (sizeof($price_range) > 2) {
$min = $max = false;
foreach ($price_range as $price) {
if ($min === false || $min > (int) $price) {
$min = floor($price);
}
if ($max === false || $max < (int) $price) {
$max = ceil($price);
}
}
// if tax enabled and shop page shows price including tax
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
foreach ($tax_classes as $tax_class) {
$tax_rates = WC_Tax::get_rates($tax_class);
$class_min = $min + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($min, $tax_rates));
$class_max = $max + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($max, $tax_rates));
$min = $max = false;
if ($min === false || $min > (int) $class_min) {
$min = floor($class_min);
}
if ($max === false || $max < (int) $class_max) {
$max = ceil($class_max);
}
}
}
// if WooCommerce Currency Switcher plugin is activated
if (class_exists('WOOCS')) {
$woocs = new WOOCS();
$chosen_currency = $woocs->get_woocommerce_currency();
$currencies = $woocs->get_currencies();
if (sizeof($currencies) > 0) {
foreach ($currencies as $currency) {
if ($currency['name'] == $chosen_currency) {
$rate = $currency['rate'];
}
}
$min = floor($min * $rate);
$max = ceil($max * $rate);
}
}
if ($min == $max) {
// empty array
return array();
} else {
// array with min and max values
return array($min, $max);
}
} else {
// empty array
return array();
}
}
示例4: widget
/**
* Output widget.
*
* @see WP_Widget
*
* @param array $args
* @param array $instance
*/
public function widget($args, $instance)
{
global $wp, $wp_the_query;
if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
return;
}
if (!$wp_the_query->post_count) {
return;
}
// Remember current filters/search
if ('' == get_option('permalink_structure')) {
$link_url = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
} else {
$link_url = preg_replace('%\\/page/[0-9]+%', '', home_url(trailingslashit($wp->request)));
}
if (get_search_query()) {
$link_url = add_query_arg('s', get_search_query(), $link_url);
}
if (!empty($_GET['post_type'])) {
$link_url = add_query_arg('post_type', urlencode($_GET['post_type']), $link_url);
}
if (!empty($_GET['product_cat'])) {
$link_url = add_query_arg('product_cat', urlencode($_GET['product_cat']), $link_url);
}
if (!empty($_GET['product_tag'])) {
$link_url = add_query_arg('product_tag', urlencode($_GET['product_tag']), $link_url);
}
if (!empty($_GET['orderby'])) {
$link_url = add_query_arg('orderby', urlencode($_GET['orderby']), $link_url);
}
if ($_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes()) {
foreach ($_chosen_attributes as $attribute => $data) {
$taxonomy_filter = 'filter_' . str_replace('pa_', '', $attribute);
$link_url = add_query_arg($taxonomy_filter, urlencode(implode(',', $data['terms'])), $link_url);
if ('or' == $data['query_type']) {
$link_url = add_query_arg(str_replace('pa_', 'query_type_', $attribute), 'or', $link_url);
}
}
}
// Find min and max price in current result set
$prices = $this->get_filtered_price();
$min = floor($prices->min_price);
$max = ceil($prices->max_price);
if ($min === $max) {
return;
}
$this->widget_start($args, $instance);
/**
* Adjust max if the store taxes are not displayed how they are stored.
* Min is left alone because the product may not be taxable.
* Kicks in when prices excluding tax are displayed including tax.
*/
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
$class_max = $max;
foreach ($tax_classes as $tax_class) {
if ($tax_rates = WC_Tax::get_rates($tax_class)) {
$class_max = $max + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($max, $tax_rates));
}
}
$max = $class_max;
}
$minprice = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : '';
$maxprice = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : '';
$output = '';
$min_price = 0;
$range_size = intval($instance['range_size']);
$max_ranges = intval($instance['max_ranges']) - 1;
$count = 0;
if (strlen($minprice) > 0) {
$output .= '<li><a href="' . esc_url($link_url) . '">' . esc_html__('All', 'cruxstore') . '</a></li>';
} else {
$output .= '<li class="selected">' . esc_html__('All', 'cruxstore') . '</li>';
}
while ($count <= $max_ranges) {
$step = $min_price;
$min_price += $range_size;
if ($count != $max_ranges) {
if ($min_price > $max) {
$min_price = $max;
}
$link = add_query_arg(array('min_price' => $step, 'max_price' => $min_price), $link_url);
$price_text = wc_price($step) . ' - ' . wc_price($min_price);
} else {
$link = add_query_arg(array('min_price' => $step, 'max_price' => $max), $link_url);
$price_text = wc_price($step) . '+';
}
if ($step == $minprice && $min_price == $maxprice) {
$output .= '<li class="selected">' . $price_text . '</li>';
} else {
$output .= '<li><a href="' . esc_url($link) . '">' . $price_text . '</a></li>';
}
//.........这里部分代码省略.........
示例5: widget
/**
* widget function.
*
* @see WP_Widget
*
* @param array $args
* @param array $instance
*/
public function widget($args, $instance)
{
global $_chosen_attributes, $wpdb, $wp;
if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
return;
}
if (sizeof(WC()->query->unfiltered_product_ids) == 0) {
return;
// None shown - return
}
$min_price = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : '';
$max_price = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : '';
wp_enqueue_script('wc-price-slider');
// Remember current filters/search
$fields = '';
if (get_search_query()) {
$fields .= '<input type="hidden" name="s" value="' . get_search_query() . '" />';
}
if (!empty($_GET['post_type'])) {
$fields .= '<input type="hidden" name="post_type" value="' . esc_attr($_GET['post_type']) . '" />';
}
if (!empty($_GET['product_cat'])) {
$fields .= '<input type="hidden" name="product_cat" value="' . esc_attr($_GET['product_cat']) . '" />';
}
if (!empty($_GET['product_tag'])) {
$fields .= '<input type="hidden" name="product_tag" value="' . esc_attr($_GET['product_tag']) . '" />';
}
if (!empty($_GET['orderby'])) {
$fields .= '<input type="hidden" name="orderby" value="' . esc_attr($_GET['orderby']) . '" />';
}
if ($_chosen_attributes) {
foreach ($_chosen_attributes as $attribute => $data) {
$taxonomy_filter = 'filter_' . str_replace('pa_', '', $attribute);
$fields .= '<input type="hidden" name="' . esc_attr($taxonomy_filter) . '" value="' . esc_attr(implode(',', $data['terms'])) . '" />';
if ('or' == $data['query_type']) {
$fields .= '<input type="hidden" name="' . esc_attr(str_replace('pa_', 'query_type_', $attribute)) . '" value="or" />';
}
}
}
if (0 === sizeof(WC()->query->layered_nav_product_ids)) {
$min = floor($wpdb->get_var("\n\t\t\t\tSELECT min(meta_value + 0)\n\t\t\t\tFROM {$wpdb->posts} as posts\n\t\t\t\tLEFT JOIN {$wpdb->postmeta} as postmeta ON posts.ID = postmeta.post_id\n\t\t\t\tWHERE meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_meta_keys', array('_price', '_min_variation_price')))) . "')\n\t\t\t\tAND meta_value != ''\n\t\t\t"));
$max = ceil($wpdb->get_var("\n\t\t\t\tSELECT max(meta_value + 0)\n\t\t\t\tFROM {$wpdb->posts} as posts\n\t\t\t\tLEFT JOIN {$wpdb->postmeta} as postmeta ON posts.ID = postmeta.post_id\n\t\t\t\tWHERE meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_meta_keys', array('_price')))) . "')\n\t\t\t"));
} else {
$min = floor($wpdb->get_var("\n\t\t\t\tSELECT min(meta_value + 0)\n\t\t\t\tFROM {$wpdb->posts} as posts\n\t\t\t\tLEFT JOIN {$wpdb->postmeta} as postmeta ON posts.ID = postmeta.post_id\n\t\t\t\tWHERE meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_meta_keys', array('_price', '_min_variation_price')))) . "')\n\t\t\t\tAND meta_value != ''\n\t\t\t\tAND (\n\t\t\t\t\tposts.ID IN (" . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ")\n\t\t\t\t\tOR (\n\t\t\t\t\t\tposts.post_parent IN (" . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ")\n\t\t\t\t\t\tAND posts.post_parent != 0\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t"));
$max = ceil($wpdb->get_var("\n\t\t\t\tSELECT max(meta_value + 0)\n\t\t\t\tFROM {$wpdb->posts} as posts\n\t\t\t\tLEFT JOIN {$wpdb->postmeta} as postmeta ON posts.ID = postmeta.post_id\n\t\t\t\tWHERE meta_key IN ('" . implode("','", array_map('esc_sql', apply_filters('woocommerce_price_filter_meta_keys', array('_price')))) . "')\n\t\t\t\tAND (\n\t\t\t\t\tposts.ID IN (" . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ")\n\t\t\t\t\tOR (\n\t\t\t\t\t\tposts.post_parent IN (" . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ")\n\t\t\t\t\t\tAND posts.post_parent != 0\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t"));
}
if ($min == $max) {
return;
}
$this->widget_start($args, $instance);
if ('' == get_option('permalink_structure')) {
$form_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
} else {
$form_action = preg_replace('%\\/page/[0-9]+%', '', home_url(trailingslashit($wp->request)));
}
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
$min = 0;
foreach ($tax_classes as $tax_class) {
$tax_rates = WC_Tax::get_rates($tax_class);
$class_min = $min + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($min, $tax_rates));
$class_max = $max + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($max, $tax_rates));
if ($min === 0 || $class_min < $min) {
$min = $class_min;
}
if ($class_max > $max) {
$max = $class_max;
}
}
}
echo '<form method="get" action="' . esc_url($form_action) . '">
<div class="price_slider_wrapper">
<div class="price_slider" style="display:none;"></div>
<div class="price_slider_amount">
<input type="text" id="min_price" name="min_price" value="' . esc_attr($min_price) . '" data-min="' . esc_attr(apply_filters('woocommerce_price_filter_widget_min_amount', $min)) . '" placeholder="' . esc_attr__('Min price', 'woocommerce') . '" />
<input type="text" id="max_price" name="max_price" value="' . esc_attr($max_price) . '" data-max="' . esc_attr(apply_filters('woocommerce_price_filter_widget_max_amount', $max)) . '" placeholder="' . esc_attr__('Max price', 'woocommerce') . '" />
<button type="submit" class=" filter">' . __('Filter', 'woocommerce') . '</button>
<div class="price_label price-input" style="display:none;">
' . __('Price:', 'woocommerce') . ' <span class="from"></span> — <span class="to"></span>
</div>
' . $fields . '
<div class="clear"></div>
</div>
</div>
</form>';
$this->widget_end($args);
}
示例6: widget
/**
* Output widget.
*
* @see WP_Widget
*
* @param array $args
* @param array $instance
*/
public function widget($args, $instance)
{
global $wp, $wp_the_query;
if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
return;
}
if (!$wp_the_query->post_count) {
return;
}
$min_price = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : '';
$max_price = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : '';
wp_enqueue_script('wc-price-slider');
// Remember current filters/search
$fields = '';
if (get_search_query()) {
$fields .= '<input type="hidden" name="s" value="' . get_search_query() . '" />';
}
if (!empty($_GET['post_type'])) {
$fields .= '<input type="hidden" name="post_type" value="' . esc_attr($_GET['post_type']) . '" />';
}
if (!empty($_GET['product_cat'])) {
$fields .= '<input type="hidden" name="product_cat" value="' . esc_attr($_GET['product_cat']) . '" />';
}
if (!empty($_GET['product_tag'])) {
$fields .= '<input type="hidden" name="product_tag" value="' . esc_attr($_GET['product_tag']) . '" />';
}
if (!empty($_GET['orderby'])) {
$fields .= '<input type="hidden" name="orderby" value="' . esc_attr($_GET['orderby']) . '" />';
}
if (!empty($_GET['min_rating'])) {
$fields .= '<input type="hidden" name="min_rating" value="' . esc_attr($_GET['min_rating']) . '" />';
}
if ($_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes()) {
foreach ($_chosen_attributes as $attribute => $data) {
$taxonomy_filter = 'filter_' . str_replace('pa_', '', $attribute);
$fields .= '<input type="hidden" name="' . esc_attr($taxonomy_filter) . '" value="' . esc_attr(implode(',', $data['terms'])) . '" />';
if ('or' == $data['query_type']) {
$fields .= '<input type="hidden" name="' . esc_attr(str_replace('pa_', 'query_type_', $attribute)) . '" value="or" />';
}
}
}
// Find min and max price in current result set
$prices = $this->get_filtered_price();
$min = floor($prices->min_price);
$max = ceil($prices->max_price);
if ($min === $max) {
return;
}
$this->widget_start($args, $instance);
if ('' == get_option('permalink_structure')) {
$form_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
} else {
$form_action = preg_replace('%\\/page/[0-9]+%', '', home_url(trailingslashit($wp->request)));
}
// Adjust min and max if the store taxes are not displayed how they are stored
if (wc_tax_enabled() && 'incl' === get_option('woocommerce_tax_display_shop') && !wc_prices_include_tax()) {
$tax_classes = array_merge(array(''), WC_Tax::get_tax_classes());
foreach ($tax_classes as $tax_class) {
$tax_rates = WC_Tax::get_rates($tax_class);
$class_min = $min + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($min, $tax_rates));
$class_max = $max + WC_Tax::get_tax_total(WC_Tax::calc_exclusive_tax($max, $tax_rates));
if ($class_min < $min) {
$min = $class_min;
}
if ($class_max > $max) {
$max = $class_max;
}
}
}
echo '<form method="get" action="' . esc_url($form_action) . '">
<div class="price_slider_wrapper">
<div class="price_slider" style="display:none;"></div>
<div class="price_slider_amount">
<input type="text" id="min_price" name="min_price" value="' . esc_attr($min_price) . '" data-min="' . esc_attr(apply_filters('woocommerce_price_filter_widget_min_amount', $min)) . '" placeholder="' . esc_attr__('Min price', 'woocommerce') . '" />
<input type="text" id="max_price" name="max_price" value="' . esc_attr($max_price) . '" data-max="' . esc_attr(apply_filters('woocommerce_price_filter_widget_max_amount', $max)) . '" placeholder="' . esc_attr__('Max price', 'woocommerce') . '" />
<button type="submit" class="button">' . __('Filter', 'woocommerce') . '</button>
<div class="price_label" style="display:none;">
' . __('Price:', 'woocommerce') . ' <span class="from"></span> — <span class="to"></span>
</div>
' . $fields . '
<div class="clear"></div>
</div>
</div>
</form>';
$this->widget_end($args);
}