如何在“商店”页面而不是产品上显示WooCommerce类别?

时间:2020-05-22 19:51:27

标签: wordpress woocommerce woocommerce-theming

我见过this question and answer。那是行不通的。


设置

我正在跑步:

  • WordPress 5.4.1
  • WooCommerce 4.1.1

我有一个自定义主题,可以通过将自己的模板放在以下内容中来覆盖某些WooCommerce模板: themes / my_theme / woocommerce / template-name.php

我已经确定商店页面(主页)使用模板 archive-product.php 。我已将此文件从 plugins / woocommerce / templates / archive-product.php 复制到我的主题中,并进行了一些小的HTML更改,这些更改非常有效。我的主题副本没有任何功能更改,只有一些HTML。

问题

我希望主页仅以缩略图显示商店类别。有一个选项可以将商店页面设置为显示类别而不是产品:

外观>自定义> WooCommerce>目录

商店页面显示已设置为显示类别

但是,商店首页似乎完全忽略了此设置,并且仍显示商品。 WooCommerce的自己的模板不接受此设置,似乎很奇怪!

如何在模板中找到此设置,然后在商店首页上显示类别(作为缩略图)?

循环类别是否与woocommerce_product_loop()等效?


作为一个补充说明,Storefront主题确实支持该设置,但Storefront没有模板 archive-product.php 。店面似乎是高度抽象的,并且在对其进行大量调试/试图将其拆开后,到目前为止,我还没有弄清楚店面使用的模板文件。

我的主题已经在生产中,我只想进行更新,以便主页显示类别,而不是直接进入产品列表。

1 个答案:

答案 0 :(得分:0)

我找到了可行的解决方案。 WooCommerce默认模板不支持在“商店”页面上显示类别的设置。

但是,使用带有do_shortcode()的简码以及满足以下条件的条件:

if (is_shop()) {

  echo do_shortcode('[product_categories hide_empty="0"]');

} else {

  woocommerce_product_loop_start();

  if ( wc_get_loop_prop( 'total' ) ) {
    while ( have_posts() ) {
      the_post();

      /**
      * Hook: woocommerce_shop_loop.
      */
      do_action( 'woocommerce_shop_loop' );

      wc_get_template_part( 'content', 'product' );
    }

  }

  woocommerce_product_loop_end();
}

还是:

  • 我想知道如何选择问题中显示的“显示类别”自定义设置,因此我的主题对此做出了回应。
  • 有没有比使用do_shortcode()更好的方法了,这感觉有点破烂