你好我对woocommerce相当新,我的商店有四类产品使用相同的单一产品模板 . 我想添加第五类产品,其中产品页面布局与已使用的产品页面布局非常不同 .
这是文件结构 -
-
主题/ woocommerce /单品/
-
主题/ woocommerce /单品 - 模拟/
-
theme / woocommerce / single-product-mock / title.php
-
theme / woocommerce / content-single-product-mock.php
-
theme / woocommerce / single-product.php
我创建了一个名为content-single-product-mock.php的文件 . 在single-product.php中使用以下代码
<?php if (has_term( 'mock', 'product_cat' )) {
woocommerce_get_template_part( 'content', 'single-product-mock' );
} else{
wc_get_template_part( 'content', 'single-product' );
} ?>
对于类别mock,它重定向到content-single-product-mock.php,但它使用单产品文件夹中的模板文件 . 如何更改content-single-product-mock.php中的模板路径,以便它使用single-product-mock文件夹中的自定义文件?
1 回答
可能有不止一种方法可以做到这一点,但它们都会转变在包含模板之前过滤模板的想法 .
您可以完全跳过WooCommerce的
simple-product.php
模板(无需覆盖该模板)并直接转到simple-product-mock.php
并在那里创建所有内容 . 你可以通过过滤template_include来做到这一点 .您可以编辑
single-product-mock.php
以调用content-single-product-mock.php
并对该文件进行硬编码 . 没有什么要求你继续使用Woo的钩子和功能 . 它们的目的只是为了让您轻松自定义 .或者真的很棘手,你可以将
single-product/title.php
等模板复制到single-product-mock
文件夹...例如:single-product-mock/title.php
然后我们're on a single product template in the mock category, we' ll拦截对single-product/something.php
模板的调用并将它们重定向到single-product-mock/something.php
如果它存在并继续指向single-product/something.php
如果没有 . 我们将通过woocommerce_locate_template
过滤器执行此操作 .