在Woocommerce中获取最后添加到购物车产品ID [复制]

问题描述 投票:0回答:3

这个问题在这里已有答案:

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

如:

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

例如,

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

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

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

php wordpress woocommerce cart
3个回答
0
投票

这意味着您可能在创建它之前访问购物车对象,例如,您需要将该代码放在'wp'挂钩中。

add_action('wp', function(){
   $product_id = end( WC()->cart->cart_contents)['product_id'];
});

0
投票

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

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 ); 
    }

0
投票

编辑我认为你在寻找产品属性ID?像绿色或蓝色等

$cart = WC()->cart->get_cart();
$variation = end($cart)['variation'];

// This will have ID, slug, count, etc.
echo json_encode( get_term_by( 'name', end($variation) , str_replace( "attribute_", "", key($variation))) );

如果你是关于你的属性,只是尺寸改变它是基于你的ta

$cart = WC()->cart->get_cart();
$variation = end($cart)['variation']['attribute_pa_size'];

// This will have ID, slug, count, etc.
echo json_encode( get_term_by( 'name', $variation , 'pa_size') );
© www.soinside.com 2019 - 2024. All rights reserved.