更改特定产品类别页面的 WordPress 模板

bas*_*bas 1 wordpress woocommerce wpml

我正在尝试更改特定产品类别页面的模板,但我一生都无法让它发挥作用。我尝试过 Taxonomy-product_cat-the-category 但无济于事。我正在使用 wpml 和 3 种不同语言的类别,如果这有什么区别的话。我已经尝试过 3 种语言中的每一种的 slugs,但仍然不起作用。不明白是什么原因造成的。

Sar*_*l N 5

首先从 WooCommerce 插件目录复制taxonomy-product_cat.php&到您的主题 - 。archive-product.phpwordpress\wp-content\plugins\woocommerce\templateswordpress\wp-content\themes\your-theme\woocommerce

archive-product.php然后在主题的 woocommerce 目录中复制文件archive-product-2.php,例如archive-product-3.php等。稍后您将根据您的类别修改这些文件。

然后打开taxonomy-product_cat.php文件。代码如下所示。

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

wc_get_template( 'archive-product.php' );
Run Code Online (Sandbox Code Playgroud)

我们需要wc_get_template()根据我们的条件修改此代码中的模板调用。

首先获取当前类别的 slug,然后我们可以比较 slug。根据 slug,我们将调用不同的存档产品文件。

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

// Get current category slug
global $wp_query;
$cat_slug = $wp_query->query_vars['product_cat'];

// Call template conditionally
if($cat_slug == 'accessories') {
    wc_get_template( 'archive-product-2.php' );
} else  {
    wc_get_template( 'archive-product.php' );   
}
Run Code Online (Sandbox Code Playgroud)

更新

根据我的经验,最好的方法是通过复制到主题文件来避免 WooCommerce 模板覆盖。WooCommerce 会定期更新模板,最好每次都更新模板以避免将来出现问题。因此,如果可能的话,最大程度地使用过滤器钩子而不是模板覆盖。