Home › Forums › Basel support forum › Related Products Tag Fiters › Reply To: Related Products Tag Fiters
May 23, 2017 at 7:23 am
#14212
dimitriadis
Participant
Hi,
Thank you for your immediate response.
I need to modify the related.php file.
I am creating a new function get_related function (found in the /classes/abstracts/abstract-wc-product.php file of the WooCommerce plugin directory) with the following code:
//New "Related Products" function for WooCommerce
function get_related_custom( $id, $limit = 5 ) {
global $woocommerce;
// Related products are found from category and tag
$tags_array = array(0);
$cats_array = array(0);
// Get tags
$terms = wp_get_post_terms($id, 'product_tag');
foreach ( $terms as $term ) $tags_array[] = $term->term_id;
// Get categories (removed by NerdyMind)
/*
$terms = wp_get_post_terms($id, 'product_cat');
foreach ( $terms as $term ) $cats_array[] = $term->term_id;
*/
// Don't bother if none are set
if ( sizeof($cats_array)==1 && sizeof($tags_array)==1 ) return array();
// Meta query
$meta_query = array();
$meta_query[] = $woocommerce->query->visibility_meta_query();
$meta_query[] = $woocommerce->query->stock_status_meta_query();
// Get the posts
$related_posts = get_posts( apply_filters('woocommerce_product_related_posts', array(
'orderby' => 'rand',
'posts_per_page' => $limit,
'post_type' => 'product',
'fields' => 'ids',
'meta_query' => $meta_query,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => $tags_array
)
)
) ) );
$related_posts = array_diff( $related_posts, array( $id ));
return $related_posts;
}
add_action('init','get_related_custom');
Then I need to go to related.php file (/themes/basel/woocommerce/single-product/related.php)
and add the following line of code:
$related = get_related_custom($product->id);
The code in your related.php file is the following:
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( $related_products ) : ?>
<section class="related products">
<?php
$slider_args = array(
'slides_per_view' => apply_filters( 'basel_related_products_per_view', 4 ),
'title' => esc_html__( 'Related products', 'woocommerce' ),
'img_size' => 'shop_catalog'
);
echo basel_generate_posts_slider( $slider_args, false, $related_products );
?>
</section>
<?php endif;
wp_reset_postdata();
When I add the line of code mentioned above, the website crashes.
Any advices?
Thank you in advance.