在WP/WC更新时显示损坏的子类别

时间:2020-08-03 作者:Tiziano Mischi

我得到了一个暂时没有更新的网站:它有WP 4.9.15和WooCommerce 2.6.14

现在我做了一个现场测试,更新了所有这些内容,现在我有了WP 5.4.2和WC 4.3.1

有一件事被打破了,我无法理解为什么页面按类别显示产品:它们有一个三级分类树。它的工作方式是这样的:如果所问的类别是一片叶子,页面会显示产品列表。如果不是叶子,它会显示所有的子类别。

执行此操作的模板页是archive-product.php 它有一个简单的循环来显示所有内容:

            <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

            <?php if ( have_posts() ) : ?>

                <?php
                    /**
                     * woocommerce_before_shop_loop hook
                     *
                     * @hooked woocommerce_result_count - 20
                     * @hooked woocommerce_catalog_ordering - 30
                     */
                    do_action( \'woocommerce_before_shop_loop\' );
                ?>

                <?php woocommerce_product_loop_start(); ?>

                    <?php woocommerce_product_subcategories(); ?>

                    <?php while ( have_posts() ) : the_post(); ?>

                        <?php wc_get_template_part( \'content\', \'product\' ); ?>

                    <?php endwhile; // end of the loop. ?>

                <?php woocommerce_product_loop_end(); ?>

                <?php
                    /**
                     * woocommerce_after_shop_loop hook
                     *
                     * @hooked woocommerce_pagination - 10
                     */
                    do_action( \'woocommerce_after_shop_loop\' );
                ?>

            <?php elseif ( ! woocommerce_product_subcategories( array( \'before\' => woocommerce_product_loop_start( false ), \'after\' => woocommerce_product_loop_end( false ) ) ) ) : ?>

                <?php wc_get_template( \'loop/no-products-found.php\' ); ?>

            <?php endif; ?>
现在,只有当请求的类别是叶子时,此页面才起作用,因此它必须显示产品列表。如果请求的类别不是叶,则不显示子类别,页面为空,仅显示类别名称(page\\u title)。因此,这意味着查询在某种程度上做得很好,但为什么不显示类别呢?如果你能帮我解决这个麻烦,谢谢你

1 个回复
最合适的回答,由SO网友:Tiziano Mischi 整理而成

我自己找到了答案,因为WC 3.3woocommerce_product_subcategories 已弃用并返回空值:

Link to woocommerce docs

因此,您必须实现自己的子类别列表视图。我用找到的代码作为提示here 并像以前一样重建类别页面

相关推荐

扩展WooCommerce小部件类-WC_Widget_Product_Categories

我正在尝试扩展woocommerce类,该类用于在我自己的插件中创建产品类别小部件,该插件为woo commerce产品添加了一个称为“部门”的新分类法。当我扩展WP\\u小部件时,一切正常,我看到一个新的小部件,可以添加到外观->小部件中。然而,当我试图扩展WC\\u Widget或WC\\u Widget\\u Product\\u类别时,我根本看不到新的Widget,即使我没有收到任何php错误。以下是我所拥有的不起作用的东西://get the base classes if(!cl