Woocommerce内容 - 单一产品模板覆盖不会工作

时间:2016-03-09 07:00:14

标签: php woocommerce

我有一个问题,我从昨天开始挣扎。所以,我的网络与woocommerce仍然在本地主机上。 我有模板覆盖问题。我在我的主题中覆盖了循环开始,结束,content-product.php和content-single-product.php,这样就可以了。 我对content-single-product.php有问题,因为我希望它可以使类别可靠(无论是识别 - id,name,slug)。所以我在google上找到了一些解决方案,但没有一个可行。 在我的singe-product.php中,我更换了

 woocommerce_get_template_part( 'content', 'single-product' );

if ( is_product_category( 'my-cat-slug' ) )
{
   woocommerce_get_template_part( 'content', 'single-product-dogs'   );  
}
else {
   woocommerce_get_template_part( 'content', 'single-product' ); 
}

我尝试使用!is_product_category替换my-cat-slug实际Cat名称,但我也没有。 当然我把single-product.php放到我的主题中的woocommerce文件夹中,其余的工作被覆盖的文件都是。我创建了文件内容-single-product-dogs.php,其中我复制了content-single-product.php中的内容,并进行了一些更改,就像TEST编写的一样小。

我也试过

if ( ! function_exists( 'woocommerce_content' ) ) {
    function woocommerce_content() {
        if ( has_term( 'my-cat-slug', 'product_cat' ) ) {
            while ( have_posts() ) : the_post();
                wc_get_template_part( 'content', 'single-product-dogs' );
            endwhile;
        }
        else {
            while ( have_posts() ) : the_post();
                wc_get_template_part( 'content', 'single-product' );
            endwhile;
        }
    }
}

这也行不通。我使用的一切,它总是回到默认覆盖的内容 - single-product.php

我没有更多的想法。请有人帮忙:)。

P.S是否可以更改默认的product-image.php,该自定义内容与single-product-dog.php不同?

由于

1 个答案:

答案 0 :(得分:1)

如果您的主题中已经 integrate WooCommerce,则可以覆盖woocommerce_content()功能。

它完美适用于WooCommerce 2.5.5

  
      
  • 将自定义模板文件放入 your_theme / woocommerce /

  •   
  • 将以下列出的代码段添加到您的主题 functions.php

  •   
/** 
 * Override 'woocommerce_content' function
 */

if ( ! function_exists( 'woocommerce_content' ) ) {

/**
 * Output WooCommerce content.
 *
 * This function is only used in the optional 'woocommerce.php' template.
 * which people can add to their themes to add basic woocommerce support.
 * without hooks or modifying core templates.
 *
 */
function woocommerce_content() {

    if ( is_singular( 'product' ) ) {

        while ( have_posts() ) : the_post();

            // Template depends from category slug

            if ( has_term( 'my-cat-slug', 'product_cat' ) ) {

              woocommerce_get_template_part( 'content', 'single-product-dogs' );  

            } else {

              woocommerce_get_template_part( 'content', 'single-product' ); 

            }

        endwhile;

    } else { ?>

        <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>

            <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

        <?php endif; ?>

        <?php do_action( 'woocommerce_archive_description' ); ?>

        <?php if ( have_posts() ) : ?>

            <?php do_action('woocommerce_before_shop_loop'); ?>

            <?php woocommerce_product_loop_start(); ?>

                <?php woocommerce_product_subcategories(); ?>

                <?php while ( have_posts() ) : the_post(); ?>

                    <?php wc_get_template_part( 'content', 'product' ); ?>

                <?php endwhile; // end of the loop. ?>

            <?php woocommerce_product_loop_end(); ?>

            <?php do_action('woocommerce_after_shop_loop'); ?>

        <?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>

            <?php wc_get_template( 'loop/no-products-found.php' ); ?>

        <?php endif;

    }
  }
}