如何在 WooCommerce 订单确认页中排除指定商品分类显示

6次阅读

如何在 WooCommerce 订单确认页中排除指定商品分类显示

本文介绍如何在 WooCommerce 的 woocommerce_thankyou 钩子中,通过 get_categories() 方法的 exclude 参数,精准隐藏特定 ID 的产品分类,避免在订单完成页展示不希望出现的分类。

本文介绍如何在 woocommerce 的 `woocommerce_thankyou` 钩子中,通过 `get_categories()` 方法的 `exclude` 参数,精准隐藏特定 id 的产品分类,避免在订单完成页展示不希望出现的分类。

在 WooCommerce 订单确认页(Thank You 页面)中动态展示所购商品的分类,是提升用户体验和引导二次转化的常见需求。但默认使用 $product->get_categories() 会输出所有关联分类,而实际业务中常需过滤掉某些内部分类(如“测试分类”“批发专用”或“隐藏品类”)。幸运的是,WooCommerce 的 get_categories() 方法底层调用 wordpress 的 WP_Term_Query,原生支持灵活的查询参数——其中 exclude 是实现分类隐藏最直接、高效的方式。

以下为优化后的完整代码示例,已集成错误处理与可维护性设计:

add_action( 'woocommerce_thankyou', 'show_product_category_excluding_specific', 10, 1 ); function show_product_category_excluding_specific( $order_id ) {     $order = wc_get_order( $order_id );     if ( ! $order || $order->is_empty() ) {         return;     }      // 定义需排除的分类 ID 数组(请根据后台实际 ID 修改)     $excluded_category_ids = array( 42, 87, 156 ); // 示例:隐藏 ID 为 42、87、156 的分类      $items = $order->get_items();     if ( empty( $items ) ) {         return;     }      echo '<div class="order-categories"><h3>您购买的商品分类:</h3><ul>';      foreach ( $items as $item ) {         $product = $item->get_product();         if ( ! $product ) {             continue;         }          // 使用 exclude 参数过滤分类         $categories_html = $product->get_categories( array(             'exclude' => $excluded_category_ids,             'separator' => ' / ', // 可选:自定义分隔符             'before'    => '',             'after'     => ''         ) );          if ( ! empty( $categories_html ) ) {             echo '<li>' . wp_kses_post( $categories_html ) . '</li>';         }     }      echo '</ul></div>'; }

关键说明与注意事项

通过以上方式,你无需修改 WooCommerce 核心或额外查询数据库,即可轻量、可靠地实现分类级内容控制,确保 Thank You 页面呈现精准、专业的购物闭环体验。

text=ZqhQzanResources