【问题标题】:Woocommerce get category id from product pageWoocommerce 从产品页面获取类别 ID
【发布时间】:2021-05-01 22:02:47
【问题描述】:

我正在尝试为 Woocommerce 创建自定义动态菜单,但我似乎陷入了困境。 要将我的类别标记为活动,我需要我当前所在页面的类别 ID。

如果我在一个类别中,我会得到这样的 id:

  if (is_product_category()) {
      global $wp_query;
      $curent_Cat_ID = $wp_query->get_queried_object()->term_id;
  } 

但它不会在产品页面上显示任何内容。 有没有办法在产品页面上获取类别 ID?我能找到的东西不再起作用了。 或者以某种方式获得一个带有 ID 的像面包屑这样的数组?

【问题讨论】:

  • 在单个产品页面上,使用 global $product; 和 $term_ids = $product->get_category_ids(); 提供一系列产品类别术语 ID。或者你甚至可以使用$terms_ids = wp_get_post_terms( get_the_ID(), 'product_cat', array( 'fields' => 'ids' ) );
  • Nope 不适用于手风琴菜单。如果产品有让我们说 5 个类别都将被标记为活动。并展开。

标签: php wordpress woocommerce


【解决方案1】:

好吧,睡个好觉,最终我找到了答案。如果有人在这里需要它是:

       if ( is_tax( 'product_cat' ) ) {
            $current_cat   = get_queried_object_id();
            $cat_ancestors = get_ancestors( $current_cat, 'product_cat' );

        } elseif ( is_singular( 'product' ) ) {
            $terms = wc_get_product_terms(
                get_queried_object_id(),
                'product_cat',
                apply_filters(
                    'woocommerce_product_categories_widget_product_terms_args',
                    array(
                        'orderby' => 'parent',
                        'order'   => 'DESC',
                    )
                )
            );

            if ( $terms ) {
                $main_term     = apply_filters( 'woocommerce_product_categories_widget_main_term', $terms[0], $terms );
                $current_cat   = $main_term->term_id;
                $cat_ancestors = get_ancestors( $main_term->term_id, 'product_cat' );
            }
        }

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 2015-05-27
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2017-04-01
    • 2014-01-27
    相关资源
    最近更新 更多