[英]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.