繁体   English   中英

在 WooCommerce 产品类别页面循环中获取帖子计数

[英]Get posts count inside WooCommerce product category page loop

我试图在我的产品类别页面循环 (Woocommerce) 中获取帖子计数,但它不起作用。 有谁知道为什么?

Woocommerce 使用相同的文件 archive-product.php 来显示商店页面和产品类别页面。 在我的 archive-product.php 中,我在循环开始之前使用 Woocommerce function 将值传递给变量:

do_action( 'woocommerce_before_shop_loop' );

$totalproducts = wc_get_loop_prop( 'total' );

woocommerce_product_loop_start();

if ( wc_get_loop_prop( 'total' ) ) {
    while ( have_posts() ) {
        the_post();
        wc_get_template_part( 'content', 'product') );
    }
}

woocommerce_product_loop_end();

在 content-product.php 中,我调用该变量,然后使用它为每个帖子添加一个内联 z-index,并在每个帖子中减少它。

<?php global $totalproducts; ?>

<div class="product-item" style="z-index: <?php echo $totalproducts; ?>;">
   content of the post
</div>

<?php $totalproducts = $totalproducts - 1; ?>

对于商店页面,它工作得很好,但对于产品类别页面,它就不起作用,变量为空。 如果我在我的 archive-product.php 循环开始之前回显该变量,它会显示该类别的帖子数,因此它在两个页面上都可以正常工作。 但我无法在循环中获取变量,特别是在类别页面中。 有谁知道为什么会这样?

难道我做错了什么?

也许使用全局变量$wp_query及其属性post_count ,替换您的代码:

$totalproducts = wc_get_loop_prop( 'total' );

这样:

global $wp_query;

$totalproducts = wc_get_loop_prop( 'total' ) ? wc_get_loop_prop( 'total' ) : $wp_query->post_count;

它可以更好地工作。


你也可以简化这一行:

<?php $totalproducts = $totalproducts - 1; ?>

经过:

<?php $totalproducts--; ?>

好吧,我终于找到了解决问题的方法。

我所做的是调整我的代码并在我的主题目录中创建 woocommerce.php 而不是覆盖 archive-product.php。

然后文件最终也获得了产品类别页面的变量。 我不知道为什么会这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM