Skip to main content

How to filter products With tags in Woo-Commerce in Wordpress?

Filter products With tags in Woo-Commerce in Wordpress.


function product_filter_by_tag(){

ob_start();

?>


<style>




.tag_swatch_button {

transition: all .2s ease-in-out;

-webkit-appearance: none;

border-radius: 0;

font-family: inherit;

appearance: none;

background: none;

font-weight: 500;

font-size: 18px;

cursor: pointer;

padding: 12px 15px;

outline: none;

opacity: 1;

border: none;

color: #000;

}


.tag_swatch_button:hover,

.tag_swatch_button.active {

background-color: #000;

color: #fff;

}



.tag_swatch_item {

border-radius: 4px;

height: auto;

width: 30.33%;

float: left;

margin: 0 1.5% 30px 1.5%;

text-align: center;

font-size: 20px;

line-height: initial;

font-family: 'Playfair Display', Georgia, "Times New Roman", serif;

text-transform: capitalize;

}


.tag_swatch_hide {

display: none;

}




</style>


<script>


function tag_checkClass() {

  if ( $('.tag_swatch_item').hasClass('tag_swatch_hide') ) {

    $('.tag_swatch_item').removeClass('tag_swatch_hide');

  }

}

// Check active classes

jQuery(document).ready(function($){


// Category filters

 /* $('.tag_all').click( function() {

  tag_checkClass();

});  */


// Active tag

$('.tag_swatch_button').click(function(){

  $('.tag_swatch_button').removeClass('active');

  $(this).addClass('active');

})



$('.tag_swatch_button.tag_all').click( function() {

  tag_checkClass();

 // alert('hello');

  $('.tag_swatch_item:not(.tag_all)').toggleClass('tag_swatch_hide');

});

});

</script> 


 

<?php 


$tags = get_terms( 'product_tag' );

/* $term_array = array();

if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){

    foreach ( $terms as $term ) {

        $term_array[] = $term->name;

    }

}

echo '<pre>';

print_R($terms);

echo '</pre>';

die();

$page_id = get_the_ID();

$cats = get_field('categories',$page_id); */

?>


<section class="filter_swatch">

<div class="container">

<div class="buttons">

  <button class="tag_swatch_button tag_all active">All</button>

<?php  

if(!empty($tags)){

foreach($tags as $tag) {

?>

<script>

jQuery(document).ready(function($){

$('.tag_swatch_button.tag-<?php echo $tag->term_id; ?>').click( function() {

  tag_checkClass();

// alert('hello');

  $('.tag_swatch_item:not(.tag-<?php echo $tag->term_id; ?>)').toggleClass('tag_swatch_hide');

});

});

</script>

<button class="tag_swatch_button tag-<?php echo $tag->term_id; ?>"><?php echo $tag->name; ?></button>

<?php

   }

   }

?>


</div>


<div class="swatch_grid">


<?php  

if(!empty($tags)){

foreach($tags as $tag) {

$cat_id = $tag->term_id;


$args = array(

'post_type'      => 'product',

'posts_per_page' => -1,

'tax_query' => array(

array(

'taxonomy' => 'product_tag',

'field'    => 'id',

'terms'    => $cat_id,

),

)

);

$firstloop = new WP_Query($args);

$loop = new WP_Query($args);

?>

<?php

$product_id_array[] = array();

while ( $firstloop->have_posts() ) {

$firstloop->the_post();

$product_id = get_the_ID();

if (!in_array($product_id,$product_id_array)) {

?>

<a href="<?php the_permalink(); ?>" class="tag_swatch_item tag_all project_bx">

<?php the_post_thumbnail(); ?>

<span><?php the_title(); ?></span>

<?php //the_content(); ?>

</a>

<?php

$product_id_array[] = $product_id;

}

}

?>



<?php

while ( $loop->have_posts() ) {

$loop->the_post();

?>

<a href="<?php the_permalink(); ?>" class="tag_swatch_item tag-<?php echo $tag->term_id; ?> project_bx tag_swatch_hide">

<?php the_post_thumbnail(); ?>

<span><?php the_title(); ?></span>

<?php //the_content(); ?>

</a>

<?php

}

?>

<?php

   }

   }

/*    echo '<pre>';

   print_r($product_id_array);

   echo '</pre>'; */

?>


</div>

</div>

</section>

<?php


$content = ob_get_contents();

ob_end_clean();

return $content;

}

add_shortcode('product_filter_tag', 'product_filter_by_tag'); 


Comments

Popular posts from this blog

How to use inner html value or data in php from javascript(innerHTML)?

 use inner html value or data in php from javascript(innerHTML)? <html> <body> <p id="demo">use inner html value in php(innerhtml)</p> <script>   var jassi = document.getElementById("demo").innerHTML;   //document.write(jassi); </script> <?php $jassi = '<script>document.write(jassi);</script>'; echo $jassi; ?> </body> </html>

How to get store data from WCFM(Best Multi Vendor Marketplace) Plugin?

 Get store data from WCFM(Best Multi Vendor Marketplace) Plugin. global $WCFM, $WCFMmp, $wp, $WCFM_Query, $post; $store_id = ''; if ( isset( $attr['id'] ) && !empty( $attr['id'] ) ) { $store_id = absint($attr['id']); } if (  wcfm_is_store_page() ) { $wcfm_store_url = get_option( 'wcfm_store_url', 'store' ); $store_name = apply_filters( 'wcfmmp_store_query_var', get_query_var( $wcfm_store_url ) ); $store_id  = 0; if ( !empty( $store_name ) ) { $store_user = get_user_by( 'slug', $store_name ); } $store_id    = $store_user->ID; } $user_id = $store_id;  $vendor_data = get_user_meta( $user_id, 'wcfmmp_profile_settings', true ); $street_1 = $vendor_data['address']['street_1']; $street_2 = $vendor_data['address']['street_2']; $city     = $vendor_data['address']['city']; $zip      = $vendor_data['address']['zip&#

How to create login with phone number in woocommerce wordpress?

Create login with phone number in woocommerce wordpress. function wooc_extra_register_fields() {?>        <p class="form-row form-row-wide">        <label for="reg_billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?><span class="required">*</span></label>        <input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php esc_attr_e( $_POST['billing_phone'] ); ?>" />        </p>            <?php  }  add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields' );  function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) { if ( isset( $_POST['billing_phone'] ) ) {    $hasPhoneNumber= get_users('meta_value='.$_POST['billing_phone']);    if ( !empty($hasPhoneNumber)) {      $validation_er