gpt4 book ai didi

wordpress - Woocommerce:仅显示来自同一子类别的相关产品

转载 作者:行者123 更新时间:2023-12-02 01:44:48 25 4
gpt4 key购买 nike

相关产品是从您的商店中提取与当前产品共享相同标签或类别的其他产品的部分。

源代码:Woocommerce Docs

假设我在我的商店里卖 table (和其他元素)。表是一个类别。我有 3 个与表类别对应的子类别:小、中和大。

我想要的是:当你点击一张小 table 时。相关产品应该只显示小表格。
它的作用:当您单击一个小表格时。相关产品显示任何尺寸的表格。

有谁知道我如何将其更改为我想要的方式?

最佳答案

Woocommerce 3.9.0 的更新
对@alejandro-restrepo 给出的优秀答案稍作修改 - 这个版本也是 不包括当前产品 来自相关产品查询,从 Woocommerce 3.9.0 模板修改而来。
将此代码复制到 [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->get_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();

关于wordpress - Woocommerce:仅显示来自同一子类别的相关产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com