根据产品类别创建单独的单个产品模板

时间:2020-06-01 12:04:13

标签: php woocommerce customization

我正在尝试使用此代码

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' ); 
    } ?>

但我知道这不是最佳做法。 如果有人有任何建议,更正,我将不胜感激。 非常感谢 洛伦扎

0 个答案:

没有答案