这个问题在这里已有答案:
我尝试了谷歌的所有代码,但没有一个有效。
如:
$items = WC()->cart->get_cart();
$product_id = end($items)['data']->post->ID;
例如,
鞋子有两种不同的颜色:黑色和灰色。我加了黑色的鞋子,然后是灰色的鞋子,我最后订购了黑色的鞋子。
它应该返回黑鞋子的ID,但顶部的代码将显示灰色鞋子的ID。
我想要最后添加的产品,而不是最后的位置产品。
这意味着您可能在创建它之前访问购物车对象,例如,您需要将该代码放在'wp'挂钩中。
add_action('wp', function(){
$product_id = end( WC()->cart->cart_contents)['product_id'];
});
您可以将产品放入数组中,并使用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 );
}
编辑我认为你在寻找产品属性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') );