如何为WooCommerce档案页面和产品类别页面提供定制显示?

时间:2014-03-22 作者:JohnLion

到目前为止,大家好,我知道我的问题与一个关于“woocommerce”的常见问题密切相关。

我一直在使用各种woo挂钩、过滤器,并在名为woocommerce/的文件夹中,在我的子主题中创建原始woo模板文件的副本。

这是可行的,我能够进行编辑,将woocommerce整合到我的主题中。

我想做的是,Woocommerce使用归档产品。php显示产品类别。它还使用此模板显示该类别的产品

I\'d like to style the products page very differently to the category page and create another archive template that displays the products of a category

我在考虑使用新产品。php模板页或将是我的最佳选择。我对学习越来越多关于插件的知识非常感兴趣,因此我尝试远离CSS快速修复,学习使用模板文件和挂钩。

Advice or points in the right direction would be greatly appreciated.

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

通常,您可以告诉WordPress加载不同的模板。最常见的方法是使用template_redirect 或者template_include 钩最好使用template_include 如本节所述article. 下面是如何实现这一点的示例:

Code:

// load the woocommerce category archive template
add_filter( \'template_include\', \'wpse138858_woocommerce_category_archive_template\' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
    // we\'re loading the template conditionally, 
    // but only if we\'re actually on a woocommerce category archive
    if ( is_product_category() ) {
        // you\'ve to create the template you want to use here first
        return get_template_directory().\'/woocommerce-category-archive.php\';
    } else {
        return $original_template;
    }
}
其他信息:

注:

对于woocommerce,可能有一种更具体的方法来实现这一点,这取决于他们如何处理模板加载。为此,您必须扩展您的研究和/或深入woocommerce代码


编辑:

如果你想用woocommerce的方式,你需要的是功能wc_get_template_part() - 前WC 2.1,woocommerce_get_template_part(), 现已弃用。我给了一个answer 关于前一段时间如何使用后者,您可以为新命名的-功能相同-功能进行相应的操作。当然,答案是关于函数的直接使用,在您的情况下,您可能想要并且应该使用相应的钩子wc_get_template_part. 有了这些信息,您应该可以通过woocommerce的方式来实现这一点。

结束

相关推荐

如果通过admin-ajax.php的回调函数调用IS_SIGNAL(),则不起作用

在我的single.php 我有一些这样的代码。。。if(is_singular(\'post\')) { echo \'Blog\'; } else { echo \'CPT\'; } 如果我接近single.php 通过使用从博客或CPT索引页the_permalink(), 此条件正常工作。当我打开单个博客帖子时,它会显示“Blog”,当我打开单个CPT时,它会显示“CPT”。现在的问题是如果方法single.php 通过的某个回调函数admi