首页 > 解决方案 > 在 Woocommerce 中获取最后添加到购物车的产品 ID

问题描述

我尝试了谷歌的所有代码,但没有一个有效。

如:

$items = WC()->cart->get_cart();
$product_id = end($items)['data']->post->ID;

例如,

鞋子有两种不同的颜色:黑色和灰色。我添加了黑色鞋子,然后是灰色鞋子,最后我订购了黑色鞋子。

它应该返回黑色鞋子的 ID,但顶部的代码将显示灰色鞋子的 ID。

我想要最后添加的产品,而不是最后一个位置的产品。

标签: phpwordpresswoocommercecart

解决方案


您可以将产品放入一个数组并使用 phpend()函数选择最后一个,如下所示:

global $woocommerce;

//get cart items
$items = $woocommerce->cart->get_cart();

$ids = array();
foreach($items as $item => $values) { 
        $_product = $values['data']->post; 
        //push each id into array
        $ids[] = $_product->ID; 
} 

//get last product id
$last_product_id = end($ids);

//get product variation details
$variations = get_variation_data_from_variation_id( $last_product_id );

然后定义get_variation_data_from_variation_id($item_id)如下:

//function to get product variation
    function get_variation_data_from_variation_id( $item_id ) {
        $_product = new WC_Product_Variation( $item_id );
        $variation_data = $_product->get_variation_attributes();
        //return variation detail
        return woocommerce_get_formatted_variation( $variation_data, true ); 
    }

推荐阅读