在woocommerce产品页面中使用自定义product-image.php文件

时间:2018-05-29 20:10:23

标签: wordpress woocommerce

我是Woocommerce的新人。我想为图书类别自定义Woocommerce产品页面的模板。我将content-single-product.php文件替换为自定义的文件,修改了single-product.php文件中的代码,如下所示:

 <?php while ( have_posts() ) : the_post(); ?>
    <?php 
                global $post;
                $terms = wp_get_post_terms( $post->ID, 'product_cat' );
                foreach ( $terms as $term ) $categories[] = $term->slug;
                if ( in_array( 'livros', $categories ) ) {
                    wc_get_template_part( 'content', 'single-product-books' );              
                } else {
                    wc_get_template_part( 'content', 'single-product' );                
                }
                ?>
    <?php endwhile; // end of the loop. ?>

现在我想用这一个product-image-books.php替换product-image.php文件。试过这样但不起作用:

global $post;
            $terms = wp_get_post_terms( $post->ID, 'product_cat' );
            foreach ( $terms as $term ) $categories[] = $term->slug;
            if ( in_array( 'books', $categories ) ) {
                wc_get_template_part( 'content', 'single-product-books' );
                wc_get_template_part( 'single-product/product', 'image-books' );
            } else {
                wc_get_template_part( 'content', 'single-product' );
                wc_get_template_part( 'content', 'product-image' );
            }
            ?>

此文件位于模板文件夹中:woocommerce&gt;单品。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

单个产品图像使用woocommerce_show_product_images()功能&amp;通过woocommerce_before_single_product_summary钩子挂钩。

因此,不是直接调用模板,而是首先从该钩子中删除操作,然后在同一个钩子上添加自定义函数。

您要显示图片的文件(product-image-books.php&amp; product-image.php)必须位于wordpress\wp-content\themes\your-theme\woocommerce\single-product\目录中。

请在主题的functions.php文件或自定义插件文件中添加以下代码。我测试了代码和&amp;它在我的安装中运行良好。

remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );

add_action( 'woocommerce_before_single_product_summary', 'qt563_woocommerce_show_product_images', 20 );

function qt563_woocommerce_show_product_images() {
    global $post;
    $terms = wp_get_post_terms( $post->ID, 'product_cat' );
    foreach ( $terms as $term ) $categories[] = $term->slug;
    if ( in_array( 'livros', $categories ) ) {
        wc_get_template( 'single-product/product-image-books.php' );              
    } else {
        wc_get_template( 'single-product/product-image.php' );                
    }
}

@Emmanu,你能否验证一下&amp;接受它作为答案?