سلام.
چجوری میتونم محصولات مرتبط در صفحه محصول رو بر اساس زیردسته اصلی و بر اساس موجود بودن دسته بندی کنم؟
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 رو بنویسه و راهنمایی کنه.
ممنون
این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.
دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود