我正在尝试使用此代码
WooCommerce - How to create multiple single product template based on category?
由@helgatheviking建议,但没有成功!
方法A 当我使用wc_get_template方法时,我可以完美地获得产品测试页面,但是除此之外,在“相关产品”区域中,我可以无限滚动显示所有产品测试页面的内容,而不是缩略图链接!
同时,如果我从以下位置更改代码METHOD A / VARIANT:
$template = locate_template( array( WC()->template_path() . 'content-single-product-test.php' ) );
收件人:
$template = locate_template( array( WC()->template_path() . 'single-product-test.php' ) );
它崩溃了。
如果我使用woocommerce_locate_template方法,我想我已经遵循了良好的步骤:我从模板文件夹中复制了单产品文件夹,并重命名为单产品测试,然后放在这里:
我的孩子主题/ woocommerce /单个产品测试/
在这里我放文件:
my-child-theme / woocommerce / single-product-test.php
我的孩子主题/woocommerce/content-single-product-test.php
我不知道为什么我只获得默认的页面单一产品,而没有进行任何自定义。
继续阅读stackoverflow,我读到有人建议如果我们获得的页面是默认页面(我现在指的是Method A / VARIANT结果:我得到的是默认的woocommerce单产品php页面!),问题在于,我可以在single-product-test.php中将woocommerce_before_single_product动作钩子切换为do_action('my_theme_before_single_product'),然后我可以按照我想要的任何顺序向新钩子添加动作
也许我不能完全理解,因为我无法获得任何好的结果-在这里复制并粘贴修改后的single-product-test.php:
<?php
do_action( 'woocommerce_before_main_content' );
?>
<?php while ( have_posts() ) : ?>
<?php the_post(); ?>
<?php wc_get_template_part( 'content', 'single-product-test' ); ?>
<?php endwhile; // end of the loop. ?>
如果我没看错...我应该更新“ woocommerce_before_main_content”,然后更新“ my-child-theme_before_main_content” ...什么都没有改变。
我迷路了。 为了使我的模板正常工作,我不得不覆盖单一产品模板:
<?php if (has_term( 'test', 'product_cat' )) {
woocommerce_get_template_part( 'content', 'single-product-test' );
} else{
wc_get_template_part( 'content', 'single-product' );
} ?>
但我知道这不是最佳做法。 如果有人有任何建议,更正,我将不胜感激。 非常感谢 洛伦扎