Skip to content

Instantly share code, notes, and snippets.

@kaweski
Last active January 11, 2017 19:41
Show Gist options
  • Save kaweski/f43ba243ace8ca824e70335e5f2025b9 to your computer and use it in GitHub Desktop.
Save kaweski/f43ba243ace8ca824e70335e5f2025b9 to your computer and use it in GitHub Desktop.
Produtos com desconto em destaque.
<?php
/**
* Função que verifica se possui produtos com o desconto especificado
*/
function qwp_check_products( $meta_value_min, $meta_value_max ) {
$custom_field = 'qdwp_product_discount';
$args = array(
'numberposts' => 8,
'post_type' => 'product',
'orderby' => 'date',
'order' => 'DESC',
);
// Compara se os valores parametrizados são iguais
if ( $meta_value_min == $meta_value_max ) {
$meta_value = $meta_value_max = $meta_value_min;
$args['meta_key'] = $custom_field;
$args['meta_value'] = $meta_value;
// Se não for, a função pega os valores diferenciados dentro desse range
} else {
$args['meta_query'] = array(
'relation' => 'AND',
array(
'key' => $custom_field,
'value' => $meta_value_min,
'compare' => '>='
),
array(
'key' => $custom_field,
'value' => $meta_value_max,
'compare' => '<='
)
);
}
$query = new WP_Query($args);
if ( $query->have_posts() )
return $args;
else
return false;
}
/**
* Função que imprime os produtos em relação aos argumentos listados
*/
function qwp_print_products( $args ) {
$query = new WP_Query($args);
if ( $query->have_posts() ):
woocommerce_product_loop_start();
while ( $query->have_posts() ): $query->the_post();
wc_get_template_part('content', 'product');
endwhile;
wp_reset_postdata();
woocommerce_product_loop_end();
do_action('woocommerce_after_shop_loop');
elseif ( !woocommerce_product_subcategories( array('before' => woocommerce_product_loop_start(false), 'after' => woocommerce_product_loop_end(false)) ) ):
wc_get_template('loop/no-products-found.php');
endif;
}
?>
<?php
/**
*
* Ao salvar o produto, a porcentagem é armazenada num custom field
*
*/
add_action( 'save_post', 'qdwp_save_discount_percentage' );
function qdwp_save_discount_percentage( $price, $product ) {
global $post;
$regular_price = get_post_meta( $post->ID, '_regular_price', true );
$sale_price = get_post_meta( $post->ID, '_sale_price', true );
if( $sale_price ):
$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
add_post_meta( $post->ID, 'qdwp_product_discount', $percentage );
endif;
} ?>
<?php
/**
*
* Informações
*
*/
?>
<section class="qwp-home-sale">
<div class="container">
<div class="row">
<div class="col-xs-12">
<h3 class="qwp-mini-title">Ofertas Especiais</h3><!-- /.qwp-mini-title -->
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<?php
$first = 0;
// Produtos com até 10% de desconto
if ( qwp_check_products(0, 10) ): ?>
<li role="presentation" <?php if ( !$first ) echo 'class="active"'; $first++; ?>><a href="#desconto1" aria-controls="desconto1" role="tab" data-toggle="tab" class="btn btn-default btn-sm">10% Off</a></li>
<?php endif;
// Produtos com até 20% de desconto
if ( qwp_check_products(11, 20) ): ?>
<li role="presentation" <?php if ( !$first ) echo 'class="active"'; $first++; ?>><a href="#desconto2" aria-controls="desconto2" role="tab" data-toggle="tab" class="btn btn-default btn-sm">20% Off</a></li>
<?php endif;
// Produtos com 30% de desconto
if ( qwp_check_products(21, 30) ): ?>
<li role="presentation" <?php if ( !$first ) echo 'class="active"'; $first++; ?>><a href="#desconto3" aria-controls="desconto3" role="tab" data-toggle="tab" class="btn btn-default btn-sm">30% Off</a></li>
<?php endif;
// Produtos com 40% de desconto
if ( qwp_check_products(31, 40) ): ?>
<li role="presentation" <?php if ( !$first ) echo 'class="active"'; $first++; ?>><a href="#desconto4" aria-controls="desconto4" role="tab" data-toggle="tab" class="btn btn-default btn-sm">40% Off</a></li>
<?php endif;
// Produtos com 50% de desconto
if ( qwp_check_products(41, 99) ): ?>
<li role="presentation" <?php if ( !$first ) echo 'class="active"'; $first++; ?>><a href="#desconto5" aria-controls="desconto5" role="tab" data-toggle="tab" class="btn btn-default btn-sm">50% Off</a></li>
<?php endif; ?>
</ul>
<!-- Tab panes -->
<div class="tab-content woocommerce">
<?php
$first = 0;
// Produtos com até 10% de desconto
if ( qwp_check_products(0, 10) ): ?>
<div role="tabpanel" class="tab-pane fade <?php if ( !$first ) echo 'active in'; $first++; ?>" id="desconto1">
<?php
// Lista os Produtos com até 10% de desconto
qwp_print_products( qwp_check_products(0, 10) ); ?>
</div>
<?php endif;
// Produtos com até 20% de desconto
if ( qwp_check_products(11, 20) ): ?>
<div role="tabpanel" class="tab-pane fade <?php if ( !$first ) echo 'active in'; $first++; ?>" id="desconto2">
<?php
// Lista os Produtos com até 20% de desconto
qwp_print_products( qwp_check_products(11, 20) ); ?>
</div>
<?php endif;
// Produtos com 40% de desconto
if ( qwp_check_products(21, 30) ): ?>
<div role="tabpanel" class="tab-pane fade <?php if ( !$first ) echo 'active in'; $first++; ?>" id="desconto3">
<?php
// Lista os Produtos com até 30% de desconto
qwp_print_products( qwp_check_products(21, 30) ); ?>
</div>
<?php endif;
// Produtos com 40% de desconto
if ( qwp_check_products(31, 40) ): ?>
<div role="tabpanel" class="tab-pane fade <?php if ( !$first ) echo 'active in'; $first++; ?>" id="desconto4">
<?php
// Lista os Produtos com 40% de desconto
qwp_print_products( qwp_check_products(31, 40) ); ?>
</div>
<?php endif;
// Produtos com 40% de desconto
if ( qwp_check_products(41, 99) ): ?>
<div role="tabpanel" class="tab-pane fade" id="desconto5">
<?php
// Lista os Produtos com 50% de desconto
qwp_print_products( qwp_check_products(41, 99) ); ?>
</div>
<?php endif; ?>
</div>
</div><!-- /.col-xs-12 -->
</div><!-- /.row -->
</div><!-- /.container -->
</section><!-- /.qwp-home-sale -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment