Wordpress archive-product.php上的更改不';行不通

Wordpress archive-product.php上的更改不';行不通,wordpress,woocommerce,Wordpress,Woocommerce,我正在尝试定制标准的woocommerce主题,到目前为止,它运行良好。我将所有模板文件从/plugins/woocommerce/templates复制到/mytheme/woocommerce并自定义了这些文件 但是当我在archive product.php中更改某些内容时,什么都没有发生?我甚至尝试在核心文件(/plugins/woocommerce/templates/archive product.php)中对此进行自定义,但没有成功 我想更改h1标题的类: 因此,我查找了所有woo

我正在尝试定制标准的woocommerce主题,到目前为止,它运行良好。我将所有模板文件从
/plugins/woocommerce/templates
复制到
/mytheme/woocommerce
并自定义了这些文件

但是当我在
archive product.php
中更改某些内容时,什么都没有发生?我甚至尝试在核心文件(
/plugins/woocommerce/templates/archive product.php
)中对此进行自定义,但没有成功

我想更改
h1
标题的类:

因此,我查找了所有woocommerce模板文件,类
页面标题
仅出现在这一个文件中(以防止编辑错误的文件)

编辑:


详细地说,我想自定义此路径中使用的主题:

以下是我修复我的主题的方法:

  • 删除主题文件夹中的woocommerce.php
  • 复制woocommerce插件目录中的模板文件夹,将其粘贴到主题文件夹中,然后将其重命名为woocommerce
  • 打开刚刚重命名的文件夹,转到shop文件夹,编辑wrapper-start.php和wrapper-end.php

  • 看来这仍然是商业中的一个问题。对于任何登陆这里的人,从2.1.6版开始,以下解决方案对我有效

    显然,问题是由于函数woocommerce_content()为存档内容输出了错误的页面

    我用以下方法来解决这个问题:

    将woocommerce.php中的woocommerce_content()替换为:

    if ( is_singular( 'product' ) ) {
     woocommerce_content();
    }else{
    //For ANY product archive.
    //Product taxonomy, product search or /shop landing
     woocommerce_get_template( 'archive-product.php' );
    }
    

    信用:找到解决方案

    如果使用woocommerce.php方法,则无法自定义存档产品。您必须使用hooks方法

    请注意:在主题文件夹中创建woocommerce.php时,您将无法覆盖woocommerce/archive-product.php自定义模板,因为woocommerce.php的优先级高于archive-product.php。这是为了防止显示问题

    您需要编辑文件“taxonomy-product_cat.php”,并添加一个条件is_product_类别('mycategory')

  • 打开您的主题文件夹,并向其中添加一个名为“woocommerce”的新子文件夹
  • 将文件“archive product.php”和“taxonomy-product_cat.php”从/plugins/woocommerce/templates复制到主题中的woocommerce子文件夹中
  • 将“archive product.php”重命名为“archive mycategory.php”(或者不管您喜欢什么,这将是该类别的模板文件)
  • 打开“taxonomy-product_cat.php”并包装
    wc_get_模板('archive product.php')带有:
  • if(是产品类别('mycategory')){
    wc_get_模板('archive mycategory.php');
    }否则{
    wc_get_模板('archive product.php');
    }
    
    我尝试了上述所有解决方案,但均无效。无论我做了什么,都没有使用archive-product.php。相反,大多数woocommerce页面都使用我的主题中的page.php

    我的解决方案是添加主题支持。。。我已经有一段时间没有使用woocommerce了,所以我完全忘记了这一点。但是在我的functions.php文件中添加了以下行之后,现在正在使用archive-product.php(/mytheme/woocommerce/archive-product.php),我可以按照我应该能够的方式对其进行更新

    add_theme_support('woocommerce');
    

    对于在此处搜索的其他人,请双击路径。例如,它不是
    /myteme/woocommerce/templates/archive product.php
    ,而是
    /myteme/woocommerce/archive product.php
    。我不必将@Talk nerdy应用到我的补丁或任何其他补丁上,就能让它工作。

    你的网站上安装了缓存插件吗?没有,我没有安装任何缓存插件。哇。。。这是可行的,但根据WooCommerce文档,这与为主题添加兼容性的所有内容都背道而驰。这是虫子吗?这似乎是一个可怕的解决方案,但确实有效。这是一个设计方案,看这里这个解决方案现在已经过时了-woocommerce.phpNo中不存在woocommerce\u content(),
    woocommerce\u content()
    在最新版本中仍然存在。即使到2020年,这仍然是一个问题。谢谢你的回答,经过两天的搜索找到了。你太棒了!在使用此解决方案之前,请尝试在functions.php文件中添加对woocommerce的支持,正如@IAteYourKitten在下面指出的那样。感谢您的帮助。在我的例子中,我遇到了应用过滤器的问题,甚至模板覆盖都没有。直到我添加了wc主题支持,它才开始工作。奇怪..很好用!谢谢。不知道我怎么会错过这个,但是谢谢你的提醒!天啊!我完全忘了这件事=我遇到了麻烦,现在所有的结构都修好了!我的主题中的woocommerce文件夹现在工作得很好,body类也回来了。示例:按ctrl+u显示源代码,我现在可以看到添加到body类的所有页面类型!非常感谢!如果您添加了主题支持,那么WooCommerce决定在您的主题中始终显示一个侧栏,即使您没有侧栏。如果不添加主题支持,则无法删除类别描述挂钩。这是一个很棒的软件。