من همچین مشکلی دارم
میخوام محصولات مرتبط از زیرگروه همون محصول باشه مثلا ==> خانه / کالای دیجیتال / کامپیوتر و تجهیزات جانبی / تجهیزات مخصوص بازی / دسته بازی
میخوام محصول قرار گرفته در دسته ی ( دسته بازی ) محصولات پیشنهادیشم از همین گروه باشه که زیرش فقط دسته بازی نمایش بده
به این مسیر از قالبتون برید: your-theme/woocommerce/single-product/related.php و با حفظ بک آپ از این فایل، محتویات اونرو به مقدار زیر تغییر بدید و بررسی کنید:
<?php
/**
* Related Products
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/related.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 3.9.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product, $woocommerce_loop;
if ( empty( $product ) || ! $product->exists() ) {
return;
}
if ( ! $related = $product->get_related( $posts_per_page ) ) {
return;
}
// Get ID of current product, to exclude it from the related products query
$current_product_id = $product->get_id();
$cats_array = array(0);
// get categories
$terms = wp_get_post_terms( $product->id, 'product_cat' );
// select only the category which doesn't have any children
foreach ( $terms as $term ) {
$children = get_term_children( $term->term_id, 'product_cat' );
if ( !sizeof( $children ) )
$cats_array[] = $term->term_id;
}
$args = apply_filters( 'woocommerce_related_products_args', array(
'post_type' => 'product',
'post__not_in' => array( $current_product_id ), // exclude current product
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => $posts_per_page,
'orderby' => $orderby,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
)
));
$products = new WP_Query( $args );
$woocommerce_loop['name'] = 'related';
$woocommerce_loop['columns'] = apply_filters( 'woocommerce_related_products_columns', $columns );
if ( $products->have_posts() ) : ?>
<section class="related products">
<?php
$heading = apply_filters( 'woocommerce_product_related_products_heading', __( 'Related products', 'woocommerce' ) );
if ( $heading ) :
?>
<h2><?php echo esc_html( $heading ); ?></h2>
<?php endif; ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ( $products->have_posts() ) : $products->the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
</section>
<?php endif;
wp_reset_postdata();
سلام خدمت شما
کد هایی که جناب مهندس رحیم جان @Rahim ارسال کردند درست هستند و فرم ابتدایی حالت نمایش محصولات مرتبط را نمایش میدهد
در ورژن اولیه قالب محصولات مرتبط بصورت اسلایدر میباشند
لذا برای هماهنگی کد ها باید شما your-theme/woocommerce/single-product/related.php بروید و فایل مذکور را ارسال کنید تا بررسی انجام شود و در صورت وجود کد های اولیه هماهنگی انجام داد
خیلی ممنون
لطف کردین
ولی این شد مثل روز اولش
سری قبل که رحیم جان لطف کرده بودن درست بود فقط نحوه ی نمایش درست نبود
اما الان کلا شد مثل اولش یعنی محصولاتی معرفی میکنه بی ربط هستن
سلام خدمت شما
کدی که خدمتتون ارسال کردم چندتا فیلتر دارد که عبارت است از : برحسب دسته بندی , موجود بودن محصول , فیلتر بر حسب زمان میباشد
که برحسب دسته بندی همونیه که شما میخواهید
توسعه یافته کد های مهندس هست که خدمتتون ارسال کردم
کد زیر همون کدیه که رحیم جان قرار دادند که با کد های فایلی که ارسال کردید هماهنگ شده است
<?php
/**
* Related Products
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/related.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 3.9.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product, $woocommerce_loop;
if ( empty( $product ) || ! $product->exists() ) {
return;
}
if ( ! $related = $product->get_related( $posts_per_page ) ) {
return;
}
// Get ID of current product, to exclude it from the related products query
$current_product_id = $product->get_id();
$cats_array = array(0);
// get categories
$terms = wp_get_post_terms( $product->id, 'product_cat' );
// select only the category which doesn't have any children
foreach ( $terms as $term ) {
$children = get_term_children( $term->term_id, 'product_cat' );
if ( !sizeof( $children ) )
$cats_array[] = $term->term_id;
}
$args = apply_filters( 'woocommerce_related_products_args', array(
'post_type' => 'product',
'post__not_in' => array( $current_product_id ), // exclude current product
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => $posts_per_page,
'orderby' => $orderby,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
)
));
$products = new WP_Query( $args );
$woocommerce_loop['name'] = 'related';
$woocommerce_loop['columns'] = apply_filters( 'woocommerce_related_products_columns', $columns );
if ( $products->have_posts() ) : ?>
<?php
$heading = apply_filters( 'woocommerce_product_related_products_heading', __( 'Related products', 'woocommerce' ) );
if ( $heading ) :
?>
<div class="block-title title--decor<?php echo $title_style ?>"><?php echo esc_html( $heading ); ?></div>
<?php endif; ?>
<?php //woocommerce_product_loop_start(); ?>
<div class="owl-carousel mw-owl-carousel owl_autowidth" data-margin="10" data-nav="true" data-dots="false" data-rtl="true" data-loop="false" data-responsiveClass="true" data-responsive='{"0":{"items":2},"600":{"items":2},"768":{"items":3},"1000":{"items":4},"1200":{"items":5}}'>
<?php while ( $products->have_posts() ) : $products->the_post(); ?>
<?php
$post_object = get_post( $related_product->get_id() );
setup_postdata( $GLOBALS['post'] =& $post_object );
if($is_mobile){
echo '<div class="item">';
get_template_part( 'templates/loop', 'mobile_related' );
echo '</div>';
}else{
wc_get_template_part( 'content', 'product_related' );
}
?>
<?php endwhile; // end of the loop. ?>
</div>
<?php //woocommerce_product_loop_end(); ?>
</section>
<?php endif;
wp_reset_postdata();