我目前正在使用 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" } }
我错过了什么?实现这一目标的最佳方法是什么?