archive-product.php上的更改不起作用

时间:2013-05-03 07:41:33

标签: wordpress woocommerce

我正在尝试定制标准的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

6 个答案:

答案 0 :(得分:15)

似乎这仍然是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

答案 1 :(得分:14)

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

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

add_theme_support('woocommerce');

答案 2 :(得分:8)

以下是我如何修理我的:

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

答案 3 :(得分:3)

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

  

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

答案 4 :(得分:1)

您需要编辑文件“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'); }

答案 5 :(得分:0)

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