Php 在商业中更改购物车的订单
我希望在WoodPress上的WooCommerce的购物车页面上重新排序产品表。目前,列出的产品从最旧到最新(从添加到购物车的顺序),并希望有相反的,期待有最新的添加在顶部和底部最旧的Php 在商业中更改购物车的订单,php,wordpress,woocommerce,cart,orders,Php,Wordpress,Woocommerce,Cart,Orders,我希望在WoodPress上的WooCommerce的购物车页面上重新排序产品表。目前,列出的产品从最旧到最新(从添加到购物车的顺序),并希望有相反的,期待有最新的添加在顶部和底部最旧的 do_action( 'woocommerce_before_cart' ); ?> <div class="cart_container"> <form class="cart-form" action="<?php echo esc_url( WC()->cart-&
do_action( 'woocommerce_before_cart' ); ?>
<div class="cart_container">
<form class="cart-form" action="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" method="post">
<?php do_action( 'woocommerce_before_cart_table' ); ?>
do_action('woocommerce_-before_-cart');?>
您可以修改woocommerce插件的cart/cart.php模板文件。当循环在购物车页面上以“WC()->cart->get_cart()”开始时,您可以首先将此数组放入一个单独的数组中,反转,然后使用此反转数组按相反顺序显示购物车产品
建议使用此选项是因为您实际上并没有与woocommerce对象交互,因此它涉及的处理较少。您只是将它们颠倒显示。您可以修改woocommerce插件的cart/cart.php模板文件。当循环在购物车页面上以“WC()->cart->get_cart()”开始时,您可以首先将此数组放入一个单独的数组中,反转,然后使用此反转数组按相反顺序显示购物车产品
建议使用此选项是因为您实际上并没有与woocommerce对象交互,因此它涉及的处理较少。你只是把它们颠倒过来
要进行任何类型的购物车订购,您必须使用
钩子;以及扭转局面
只需使用PHP函数即可订购
代码如下:
add_action('woocommerce_cart_loaded_from_session', 'wh_cartOrderItemsbyNewest');
function wh_cartOrderItemsbyNewest() {
//if the cart is empty do nothing
if (WC()->cart->get_cart_contents_count() == 0) {
return;
}
//array to collect cart items
$cart_sort = [];
//add cart item inside the array
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$cart_sort[$cart_item_key] = WC()->cart->cart_contents[$cart_item_key];
}
//replace the cart contents with in the reverse order
WC()->cart->cart_contents = array_reverse($cart_sort);
}
代码进入活动子主题(或主题)的function.php
文件。也可以在任何插件php文件中使用。
代码经过测试并正常工作。
希望这有帮助
要进行任何类型的购物车订购,您必须使用
钩子;以及扭转局面
只需使用PHP函数即可订购
代码如下:
add_action('woocommerce_cart_loaded_from_session', 'wh_cartOrderItemsbyNewest');
function wh_cartOrderItemsbyNewest() {
//if the cart is empty do nothing
if (WC()->cart->get_cart_contents_count() == 0) {
return;
}
//array to collect cart items
$cart_sort = [];
//add cart item inside the array
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$cart_sort[$cart_item_key] = WC()->cart->cart_contents[$cart_item_key];
}
//replace the cart contents with in the reverse order
WC()->cart->cart_contents = array_reverse($cart_sort);
}
代码进入活动子主题(或主题)的function.php
文件。也可以在任何插件php文件中使用。
代码经过测试并正常工作。
希望这有帮助 接受的答案有一个主要缺陷:它创建了一个竞争条件和一个无限的AJAX刷新循环,并打开了多个选项卡()
我能够绕过这个问题的方法是使用动作挂钩:
在购物车内容循环通过之前,我们反转内容并保存新的反向顺序
购物车内容循环通过后,我们重复步骤1以恢复原始订单
有三个区域(默认情况下)在前端循环购物车项目,因此我使用的动作挂钩覆盖了每个区域
下面是经过测试的代码:
function reverse\u cart\u contents(){
$cart_contents=WC()->cart->get_cart_contents();
如果($cart\u内容){
$reversed\u contents=数组\u reverse($cart\u contents);
WC()->购物车->设置购物车内容($reversed\u contents);
}
}
添加操作(“在小型购物车之前添加商业购物车”,“反向购物车内容”);
添加操作(“在小购物车之后添加商业购物车”,“反转购物车内容”);
添加操作(“在购物车之前添加购物车”,“反向购物车内容”);
添加操作(“在购物车后面加上购物车”,“反转购物车内容”);
添加操作(“在购物车内容之前查看订单”,“反向购物车内容”);
添加操作(“在购物车内容之后查看订单”,“反向购物车内容”);
公认的答案有一个主要缺陷:它创建了一个竞争条件和一个无限的AJAX刷新循环,并打开了多个选项卡()
我能够绕过这个问题的方法是使用动作挂钩:
在购物车内容循环通过之前,我们反转内容并保存新的反向顺序
购物车内容循环通过后,我们重复步骤1以恢复原始订单
有三个区域(默认情况下)在前端循环购物车项目,因此我使用的动作挂钩覆盖了每个区域
下面是经过测试的代码:
function reverse\u cart\u contents(){
$cart_contents=WC()->cart->get_cart_contents();
如果($cart\u内容){
$reversed\u contents=数组\u reverse($cart\u contents);
WC()->购物车->设置购物车内容($reversed\u contents);
}
}
添加操作(“在小型购物车之前添加商业购物车”,“反向购物车内容”);
添加操作(“在小购物车之后添加商业购物车”,“反转购物车内容”);
添加操作(“在购物车之前添加购物车”,“反向购物车内容”);
添加操作(“在购物车后面加上购物车”,“反转购物车内容”);
添加操作(“在购物车内容之前查看订单”,“反向购物车内容”);
添加操作(“在购物车内容之后查看订单”,“反向购物车内容”);
太好了,正是我想要的,谢谢!知道如何为我的迷你购物车返回相同的订单吗?@Kelly:我对迷你购物车不太熟悉,但我会尽快找到解决方案。@Kelly将mini-cart.php模板复制到主题中,并在每个循环中使用array\u reverse:foreach(array\u reverse(WC()->cart->get\u cart())作为$cart\u item\u key=>$cart\u item){
…太好了,正是我想要的,谢谢!知道如何为我的迷你车返回相同的订单吗?@Kelly:我对迷你车不太熟悉,但我会尽快找到解决方案。@Kelly将mini-cart.php模板复制到主题中,并在每个循环中使用array\u reverse:foreach(array\u reverse(WC()->cart->get\u cart())作为$cart\u item\u key=>$cart\u item){
。。。