【问题标题】:Changing Wordpress template for specific product category page更改特定产品类别页面的 Wordpress 模板
【发布时间】:2018-05-30 20:15:28
【问题描述】:

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

【问题讨论】:

    标签: wordpress woocommerce wpml


    【解决方案1】:

    首先将 taxonomy-product_cat.phparchive-product.php 从 WooCommerce 插件目录 - wordpress\wp-content\plugins\woocommerce\templates 复制到您的主题 - wordpress\wp-content\themes\your-theme\woocommerce

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

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

    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    
    wc_get_template( 'archive-product.php' );
    

    我们需要根据我们的条件修改这段代码中的模板调用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' );   
    }
    

    更新

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

    【讨论】:

      【解决方案2】:

      您不能为特定类别更改 WP 的模板,但是

      • 仅用于覆盖设计:您可以在每个类、ID 或标签名称的开头使用 body.term-yourcategoryname 来执行 css,如下所示:

        body.term-汽车 h1 { 红色; 字体大小:22px; }

      • 为了增强布局:或添加一些新功能,您可以使用 wooommerce 默认函数,例如:$term->name; inarchive-product.php 在您的子主题中。

      示例:

      if($term->name == "car") {
         // your code will goes here
      }
      

      【讨论】:

      • “您不能为特定类别更改 WP 的模板”这是不正确的。见the WordPress template hierarchy
      • 哈哈,你甚至没有明白我所说的 WP 主题的意思,就像你不能只为特定类别或自定义页面等设置 WP 主题。
      • @Harry,分类术语的模板可以通过遵循 WordPress 模板层次结构来实现。但是 WooCommerce 有自己的模板结构,因此我们必须遵循该结构来覆盖 WooCommerce 模板。
      猜你喜欢
      • 2017-04-06
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2018-06-27
      • 2018-09-27
      • 1970-01-01
      • 2021-05-08
      • 2021-07-05
      相关资源
      最近更新 更多