0

我目前正在使用 Sage 9 构建一个 woocommerce 网站。我正在尝试为我的每个类别创建不同的产品页面模板。我有一个未分类的类别和一个“自定义”类别。

现在,我尝试了两种方法:

  • 在 filters.php 文件中添加一个过滤器,如下所示:
    add_filter( 'template_include', 'so_43621049_template_include' );

    function so_43621049_template_include( $template ) {
      if ( is_singular('product') && (has_term( 'custom', 'product_cat')) ) {
        $template = get_stylesheet_directory() . '/views/woocommerce/single-product-custom.blade.php';
      }
      return $template;
    }
  • 像这样修改我的 single-product.blade.php 文件中的代码:
    @while(have_posts())
        @php
            the_post();
            do_action('woocommerce_shop_loop');
            global $post;
            $terms = wp_get_post_terms( $post->ID, 'product_cat' );
            foreach ( $terms as $term ) $categories[] = $term->slug;
            if ( in_array( 'custom', $categories ) ) {
            wc_get_template_part('content', 'single-product-custom');
            } else {
            wc_get_template_part('content', 'single-product');
            }
        @endphp
    @endwhile

但是没有一个有效...第一种方法没有做任何事情,而第二种方法做了一些奇怪的事情:当我打开自定义产品页面时,我只有页眉和页脚,页面上没有其他内容。这部分的 var_dump 返回以下内容:

array(1) { [0]=> object(WP_Term)#13883 (10) { ["term_id"]=> int(61) ["name"]=> string(6) "Custom" ["slug"]=> string(6) "custom" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(61) ["taxonomy"]=> string(11) "product_cat" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(1) ["filter"]=> string(3) "raw" } }

我错过了什么?实现这一目标的最佳方法是什么?

4

0 回答 0