【问题标题】:How to show WooCommerce Categories on 'shop' page instead of products?如何在“商店”页面而不是产品上显示 WooCommerce 类别?
【发布时间】:2023-03-26 12:03:01
【问题描述】:

我见过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 中的 this 复制到我的主题中,并进行了一些完美的 HTML 更改。我的主题副本中没有任何功能变化,只是一些 HTML。

问题

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

外观 > 自定义 > WooCommerce > 目录

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

但是商店主页似乎完全忽略了这个设置,它仍然显示产品。 WooCommerce 的自己的模板 不支持此设置似乎令人惊讶!

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

对于循环类别,是否有等效于 woocommerce_product_loop() 的方法?


附带说明,Storefront 主题确实支持该设置,但 Storefront 没有模板 archive-product.php。店面似乎是高度抽象的,经过大量调试/尝试将其拆开,我至今还没有弄清楚它用于商店页面的模板文件。

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

【问题讨论】:

    标签: wordpress woocommerce woocommerce-theming


    【解决方案1】:

    我找到了一个可行的解决方案。 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() 更好的方法,这感觉有点像 hack

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2022-01-26
      • 1970-01-01
      • 2021-12-12
      • 2019-08-22
      相关资源
      最近更新 更多