php - 在 WooCommerce 产品类别页面循环中获取帖子计数
问题描述
我试图在我的产品类别页面循环(Woocommerce)中获取帖子计数,但它不起作用。有谁知道为什么?
Woocommerce 使用相同的文件 archive-product.php 来显示商店页面和产品类别页面。在我的 archive-product.php 中,我在循环开始之前使用 Woocommerce 函数将值传递给了一个变量:
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--; ?>
推荐阅读
- r - 在 R janitor 包中使用 `make_clean_names` 保留重复项
- vue.js - 如何在 vuetify 中设置多个下拉菜单
- javascript - 为什么关闭alert时页面会跳转到php文件的地址?
- laravel - Laravel 5.2 Eloquent softdelete 不起作用
- relationship - 使用 pages 数据类型时通过 kentico api 创建 adhoc 页面关系
- r - deSolve R中的时变参数矩阵
- tinkerpop - 将 gremlin 查询从 gremlin 控制台转换为字节码
- powerbi - 企业网关连接问题 - CORP\用户无权调用 Discover 方法
- javascript - Javascript 直接选择 HTML ID 元素,无需“getElementbyID”
- firebase - Firebase 存储规则匹配文件名而不扩展用户 ID