php - 显示随机类别 woocommerce - 主页
问题描述
在我的 eshop(woocommerce)中,我有 10 个类别。我在我的主页上仅显示 4 个(随机方法),并带有“查看更多”按钮。
但是 4 个类别仍然相同(最后一个类别)。
我想显示 10 个类别中的 4 个类别,而不是最后 4 个类别。
我的代码:
<?php
$prod_categories = get_terms( 'product_cat', array(
'number' => 4,
'exclude' => array( 23 ),
'hide_empty' => false,
));
shuffle( $prod_categories );
foreach( $prod_categories as $prod_cat ) :
$cat_thumb_id = get_woocommerce_term_meta( $prod_cat->term_id, 'thumbnail_id', true );
$shop_catalog_img = wp_get_attachment_image_src( $cat_thumb_id, $size = 'large' );
$term_link = get_term_link( $prod_cat, 'product_cat' );
?>
<div class="col-md-3">
<a href="<?php echo $term_link; ?>"><img src="<?php echo $shop_catalog_img[0]; ?>" alt="<?php echo $prod_cat->name; ?>" /><h2><?php echo $prod_cat->name; ?></h2></a>
</div>
<?php endforeach; wp_reset_query(); ?>
有什么建议吗?
解决方案
好的,它适用于此代码。
删除此行
'number' => 4,
并在下面添加洗牌,这条线
$prod_categories= array_slice( $prod_categories, 0, 4 );
<?php
$prod_categories = get_terms( 'product_cat', array(
'exclude' => array( 23 ),
'hide_empty' => false,
));
shuffle( $prod_categories );
$prod_categories= array_slice( $prod_categories, 0, 4 );
foreach( $prod_categories as $prod_cat ) :
$cat_thumb_id = get_woocommerce_term_meta( $prod_cat->term_id, 'thumbnail_id', true );
$shop_catalog_img = wp_get_attachment_image_src( $cat_thumb_id, $size = 'large' );
$term_link = get_term_link( $prod_cat, 'product_cat' );
?>
<div class="col-md-3">
<a href="<?php echo $term_link; ?>"><img src="<?php echo $shop_catalog_img[0]; ?>" alt="<?php echo $prod_cat->name; ?>" /><h2><?php echo $prod_cat->name; ?></h2></a>
</div>
<?php endforeach; wp_reset_query(); ?>
推荐阅读
- java - ConcurrentHashMap 无法按预期工作
- json - 我收到一个 Swift Decoding 错误:解析 JSON,找到一个期望字典的数组?
- node.js - 使用服务器到服务器通信的另一台服务器上的 Nodejs 子进程
- javascript - 即使我没有错误,我的模拟时钟也无法处理 java 脚本
- c# - 在包含 Picker 的自定义控件中绑定 ItemSource 属性
- javascript - Uncaught (in promise) SyntaxError: Unexpected end of JSON input when fetch get data
- c - 在不同的头文件中使用同名的宏
- google-calendar-api - Google Calendar API:当会议在其日历中不存在时,用户作为与会者存在
- c# - 执行 inkCanvas1.Strokes.Erase() 后的 WPF-InkCanvas 撤消操作
- java - Cytoscape java:将边缘一直绘制到节点的中心