我尝试了所有来自google的代码,但是它们都不起作用。
例如:
$items = WC()->cart->get_cart();
$product_id = end($items)['data']->post->ID;
例如,
鞋子有两种不同的颜色:黑色和灰色。我先添加了黑色鞋子,然后又添加了灰色鞋子,最后订购了黑色鞋子。
它应该返回黑色鞋子的ID,但顶部的代码将显示灰色鞋子的ID。
我想要最后添加的产品,而不是最后一位的产品。
答案 0 :(得分: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一样根据其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') );
答案 1 :(得分: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 );
}
答案 2 :(得分:0)
这意味着您可能在创建购物车对象之前就已经对其进行了访问,例如,您需要将该代码放入'wp'挂钩中。
add_action('wp', function(){
$product_id = end( WC()->cart->cart_contents)['product_id'];
});