【问题标题】:Changes on archive-product.php doesn't workarchive-product.php 上的更改不起作用
【发布时间】:2013-04-27 13:28:13
【问题描述】:

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

但是当我在archive-product.php 中更改某些内容时,什么都没有发生?我什至尝试在核心文件 (/plugins/woocommerce/templates/archive-product.php) 中自定义它,但我不工作。

我想更改h1标题的类:<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

所以我查找了 所有 woocommerce 模板文件,page-title 类只出现在这个文件中(以防止编辑错误的文件)。

编辑:

具体来说,我想自定义这个路径使用的主题:http://example.com/product-category/mycategory

【问题讨论】:

  • 您的网站上安装了缓存插件吗?
  • 不,我没有安装任何缓存插件。

标签: wordpress woocommerce


【解决方案1】:

我尝试了上述所有解决方案,但无济于事。无论我做什么,archive-product.php 都没有被使用。相反,大多数 woocommerce 页面都使用我的主题中的 page.php。

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

add_theme_support('woocommerce');

【讨论】:

  • 感谢您的洞察力。就我而言,我遇到了应用过滤器的问题,甚至没有模板覆盖。直到我添加了 wc 主题支持,它才起作用。奇怪..
  • 工作正常!谢谢。
  • 不知道我是怎么错过的,但感谢您的提醒!
  • 天哪!我完全忘记了这一点! =PPP 我遇到了麻烦,现在所有的结构都修复了!我主题中的 woocommerce 文件夹现在运行良好,而且 body 类也回来了。示例:按 ctrl+u 显示源代码我现在可以看到所有添加到 body 类的页面类型!非常感谢!
  • 如果您添加主题支持,那么即使您没有,WooCommerce 也会决定始终在您的主题中显示侧边栏。如果您不添加主题支持,则无法删除类别描述挂钩。很棒的软件。
【解决方案2】:

似乎这仍然是 Woocommerce 中的一个问题。对于登陆这里的任何人,从 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' );
}

学分:找到了解决方案here

【讨论】:

  • 这是设计使然,请参阅此处docs.woothemes.com/document/…
  • 这个解决方案现在已经过时了 - woocommerce_content() 在 woocommerce.php 中不存在
  • 不,woocommerce_content() 仍然存在于最新版本中。
  • 即使在 2020 年,这仍然是一个问题。谢谢你的回答,找了两天找到了。你太棒了!
  • 在使用此解决方案之前,请尝试在 functions.php 文件中添加对 woocommerce 的支持,如下面的@IAteYourKitten 指出的那样。
【解决方案3】:

这是我的修复方法:

  1. 删除主题文件夹中的 woocommerce.php。
  2. 复制 woocommerce 插件目录中的 TEMPLATE 文件夹,将其粘贴到您的主题文件夹中,并将其重命名为 woocommerce。
  3. 打开刚刚重命名的文件夹,进入shop文件夹,编辑wrapper-start.php和wrapper-end.php。

【讨论】:

  • 哇...这行得通,但是根据 WooCommerce 文档为主题添加兼容性,这与所有内容都背道而驰。这是一个错误吗?这似乎是一项可怕的工作,但绝对有效。
【解决方案4】:

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

http://docs.woothemes.com/document/third-party-custom-theme-compatibility/ 请注意:在主题文件夹中创建 woocommerce.php 时,您将无法覆盖 woocommerce/archive-product.php 自定义模板,因为 woocommerce.php 优先于 archive-product.php。这是为了防止显示问题。

【讨论】:

    【解决方案5】:

    对于在此处搜索的其他人,请仔细检查路径。例如不是/mytheme/woocommerce/templates/archive-product.php,而只是/mytheme/woocommerce/archive-product.php。我不必将@Talk nerdy 应用到我的补丁或任何其他补丁上即可。

    【讨论】:

      【解决方案6】:

      您需要编辑文件“taxonomy-product_cat.php”并添加条件 is_product_category('mycategory')。

      1. 打开您的主题文件夹并向其中添加一个名为“woocommerce”的新子文件夹。
      2. 将 /plugins/woocommerce/templates 中的文件“archive-product.php”和“taxonomy-product_cat.php”复制到您主题中的 woocommerce 子文件夹中。
      3. 将“archive-product.php”重命名为“archive-mycategory.php”(或任何您喜欢的名称,这将是该类别的模板文件)。
      4. 打开“taxonomy-product_cat.php”并将 wc_get_template( 'archive-product.php' );包装成:
          if (is_product_category( 'mycategory' )){
              wc_get_template( 'archive-mycategory.php' );
          }  else {
              wc_get_template( 'archive-product.php' );
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-27
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多