Wordpress 按类别对购物车进行排序
我已经找到了按字母顺序对收银台进行排序的代码片段。这是完美的,但正如前面提到的,我尝试按类别对我的产品进行分类和分组 有没有人可以修改下面的代码片段,使其按类别对产品进行排序Wordpress 按类别对购物车进行排序,wordpress,woocommerce,Wordpress,Woocommerce,我已经找到了按字母顺序对收银台进行排序的代码片段。这是完美的,但正如前面提到的,我尝试按类别对我的产品进行分类和分组 有没有人可以修改下面的代码片段,使其按类别对产品进行排序 add_操作('woocommerce_cart_loaded_from_session'、'bbloomer_sort_cart_items_字母顺序”); 函数bbloomer\u sort\u cart\u items\u按字母顺序(){ 全球商业; //阅读购物车项目 $products_in_cart=arra
add_操作('woocommerce_cart_loaded_from_session'、'bbloomer_sort_cart_items_字母顺序”);
函数bbloomer\u sort\u cart\u items\u按字母顺序(){
全球商业;
//阅读购物车项目
$products_in_cart=array();
foreach($woocommerce->cart->cart\u内容为$key=>$item){
$products_in_cart[$key]=$item['data']->get_title();
}
//分类购物车项目
natsort($products\u in\u cart);
//将已排序的项目分配给购物车
$cart_contents=array();
foreach($products\U作为$cart\U key=>$product\U title出现在购物车中){
$cart_contents[$cart_key]=$woocommerce->cart->cart_contents[$cart_key];
}
$WOOMerce->cart->cart\u contents=$cart\u contents;
}
您应该能够使用类WC\u产品中定义的方法get\u category\u ids()
访问类别ID
$item['data']->get_category_ids()
但是这会返回一个数组
,因此需要处理获取id的问题,例如
$ids = $item['data']->get_category_ids();
$id = $ids[ 0 ];
和转换为字符串,例如
$term_obj = get_term( $id, 'product_cat' );
$name = $term_obj->name;
然后你就可以做了
$products_in_cart[ $key ] = $name;
按照问题代码中使用的相同逻辑,按类别排序
有很多事情要考虑,这不处理多个类别的项目,它只使用索引0得到第一个。此外,如果同一类别中有多个产品,则没有额外的排序逻辑
请注意,这是未经测试的,只是一种处理方法的想法。为了按类别对购物车项目进行分组,请添加以下代码片段-
function woocommerce_before_cart_contents(){
global $woocommerce;
$cat_wisw_pros = array();
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
$product_id = $cart_item['product_id'];
$cat_ids = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) );
foreach ( $cat_ids as $id ) {
$cat_wisw_pros[$id][$cart_item_key] = $cart_item;
}
}
ksort( $cat_wisw_pros ); // Cat ID wise sort
$grouped_cart_items = array();
foreach ( $cat_wisw_pros as $cat_id => $cart_items ) {
foreach ( $cart_items as $cart_item_key => $cart_item ) {
if( !array_key_exists( $cart_item_key, $grouped_cart_items ) )
$grouped_cart_items[$cart_item_key] = $cart_item;
}
}
$woocommerce->cart->cart_contents = $grouped_cart_items;
}
add_action( 'woocommerce_before_cart_contents', 'woocommerce_before_cart_contents' );
非常感谢你!那很好用。进行分类的原因是,我们希望以“按类别订购”的方式挑选商店中的商品,我认为,当购物车按类别进行分类时,订单确认邮件也会自动按类别进行排序。您是否也有一个按类别对确认邮件进行排序的代码片段?