WordPress:在父分组产品页面显示子项的代码求助
在WooCommerce分组产品页面展示子产品的代码片段
如果你需要在分组产品的详情页(single-product.php)展示其子产品,可使用以下两种实现方式:
方式1:直接修改single-product.php文件
将以下代码插入到single-product.php的合适位置(比如产品描述区域之后):
<?php global $product; // 验证当前产品为分组产品 if ( is_product() && $product->is_type( 'grouped' ) ) { // 获取所有子产品ID $child_product_ids = $product->get_children(); if ( ! empty( $child_product_ids ) ) { echo '<div class="grouped-child-products">'; echo '<h3>子产品列表</h3>'; echo '<ul>'; foreach ( $child_product_ids as $child_id ) { $child_product = wc_get_product( $child_id ); // 仅显示可见的子产品 if ( $child_product && $child_product->is_visible() ) { echo '<li class="child-product-item">'; // 子产品名称与链接 echo '<a href="' . esc_url( $child_product->get_permalink() ) . '">' . esc_html( $child_product->get_name() ) . '</a>'; // 子产品价格 echo '<span class="child-product-price">' . $child_product->get_price_html() . '</span>'; // 加入购物车按钮(使用WooCommerce短代码) echo do_shortcode( '[add_to_cart id="' . $child_id . '"]' ); echo '</li>'; } } echo '</ul>'; echo '</div>'; } } ?>
方式2:通过钩子函数添加(推荐)
这种方式无需修改主题核心模板文件,避免主题更新时代码丢失。将以下代码添加到主题的functions.php文件中:
add_action( 'woocommerce_after_single_product_summary', 'render_grouped_product_children', 20 ); function render_grouped_product_children() { global $product; if ( ! is_product() || ! $product->is_type( 'grouped' ) ) { return; } $child_product_ids = $product->get_children(); if ( empty( $child_product_ids ) ) { return; } echo '<div class="grouped-child-products">'; echo '<h3>子产品列表</h3>'; echo '<ul>'; foreach ( $child_product_ids as $child_id ) { $child_product = wc_get_product( $child_id ); if ( $child_product && $child_product->is_visible() ) { echo '<li class="child-product-item">'; echo '<a href="' . esc_url( $child_product->get_permalink() ) . '">' . esc_html( $child_product->get_name() ) . '</a>'; echo '<span class="child-product-price">' . $child_product->get_price_html() . '</span>'; echo do_shortcode( '[add_to_cart id="' . $child_id . '"]' ); echo '</li>'; } } echo '</ul>'; echo '</div>'; }
你可以根据需求调整HTML结构和样式,比如修改标题文字、添加自定义CSS类来美化显示效果。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

