مرتب سازی محصولات مرتبط در وردپرس

بپرسید

0

{{ digitTrunc(content.likes) }}

سلام.

چجوری میتونم محصولات مرتبط در صفحه محصول رو بر اساس زیردسته اصلی و بر اساس موجود بودن دسته بندی کنم؟

How Can I sort related products in single product page of woocommerce/ by subcategory and stock status?

این کد قالب مربوط به فایل related.php در پوشه قالب من هست:

<?php
/**
 * Related Products
 *
 * @author 		WooThemes
 * @package 	WooCommerce/Templates
 * @version     3.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

$related_product_view = woodmart_get_opt( 'related_product_view' );

if ( $related_products ) : ?>

	<div class="related-products">
		
		<h3 class="title slider-title"><?php echo esc_html__( 'Related products', 'woocommerce' ); ?></h3>
		
		<?php 
		
			if ( $related_product_view == 'slider' ) {
				$slider_args = array(
					'slides_per_view' => ( woodmart_get_opt( 'related_product_columns' ) ) ? woodmart_get_opt( 'related_product_columns' ) : apply_filters( 'woodmart_related_products_per_view', 4 ),
					'img_size' => 'woocommerce_thumbnail',
					'products_bordered_grid' => woodmart_get_opt( 'products_bordered_grid' ),
					'custom_sizes' => apply_filters( 'woodmart_product_related_custom_sizes', false )
				);

				echo woodmart_generate_posts_slider( $slider_args, false, $related_products );
			}elseif ( $related_product_view == 'grid' ) {
		
				woodmart_set_loop_prop( 'products_columns', woodmart_get_opt( 'related_product_columns' ) );
				woodmart_set_loop_prop( 'products_different_sizes', false );
				woodmart_set_loop_prop( 'products_masonry', false );
				woodmart_set_loop_prop( 'products_view', 'grid' );
				
				woocommerce_product_loop_start();

				foreach ( $related_products as $related_product ) {
					$post_object = get_post( $related_product->get_id() );

					setup_postdata( $GLOBALS['post'] = $post_object );

					wc_get_template_part( 'content', 'product' ); 
				}

				woocommerce_product_loop_end();
				
				woodmart_reset_loop();
				
				if ( function_exists( 'woocommerce_reset_loop' ) ) woocommerce_reset_loop();
			}
			
		?>
		
	</div>

<?php endif;

wp_reset_postdata();

این قطعه کد رو هم پیدا کردم که بر اساس آخرین دسته محصول ، محصولات مرتبط و نشون میده:

<?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     1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

global $product, $woocommerce_loop;

if ( empty( $product ) || ! $product->exists() ) {
	return;
}

if ( ! $related = $product->get_related( $posts_per_page ) ) {
	return;
}

$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;
}

var_dump($cats_array);

$args = apply_filters( 'woocommerce_related_products_args', array(
	'post_type' => '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() ) : ?>

	<div class="related products">

		<h2><?php _e( 'Related Products', 'woocommerce' ); ?></h2>

		<?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(); ?>

	</div>

<?php endif;

wp_reset_postdata();

حالا چجوری میتونم از قطعه کد دوم در قطعه کد اول (که کد قالب من هست) استفاده کنم ؟

یا اینکه اگه امکانش هست کسی کمک کنه و قطعه کدی که میشه واسه فایل function.php رو بنویسه و راهنمایی کنه.

ممنون

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پاسخ ها به این سوال

پاسخ ها به این سوال

{{ digitTrunc(post.likes) }}

این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.

دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}

{{ err }}
{{ post.userAchivements.rhodiumAchievements }}
{{ post.userAchivements.platinumAchievements }}
{{ post.userAchivements.goldAchievements }}
{{ post.userAchivements.silverAchievements }}
{{ post.userAchivements.bronzeAchievements }}
{{ timeSince(new Date(post.date)) }} قبل

برای ثبت پاسخ خود در وب سایت وارد حساب کاربری خود شوید
قابلیت ارسال مطلب توسط مدیریت سایت غیر فعال شده است