Last active
January 11, 2017 19:41
-
-
Save kaweski/f43ba243ace8ca824e70335e5f2025b9 to your computer and use it in GitHub Desktop.
Produtos com desconto em destaque.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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; | |
} | |
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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; | |
} ?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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