如何在 'shop' 页面而不是产品上显示 WooCommerce 类别?
How to show WooCommerce Categories on 'shop' page instead of products?
我看过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。 Storefront 似乎是高度抽象的,经过多次调试/尝试将其拆开,我到目前为止还没有弄清楚它用于商店页面的模板文件。
我的主题已经在制作中,我只是想进行更新,以便主页显示类别而不是直接进入产品列表。
我找到了可行的解决方案。 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();
}
仍然:
- 我想知道如何选择问题中显示的 'show categories' 自定义设置,所以我的主题对此做出了回应。
- 有没有比使用
do_shortcode()
更好的方法,这感觉有点 hack
我看过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。 Storefront 似乎是高度抽象的,经过多次调试/尝试将其拆开,我到目前为止还没有弄清楚它用于商店页面的模板文件。
我的主题已经在制作中,我只是想进行更新,以便主页显示类别而不是直接进入产品列表。
我找到了可行的解决方案。 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();
}
仍然:
- 我想知道如何选择问题中显示的 'show categories' 自定义设置,所以我的主题对此做出了回应。
- 有没有比使用
do_shortcode()
更好的方法,这感觉有点 hack