我正在尝试将woocommerce购物车项目发送到第三方工具。我需要项目名称。
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$_product = $values['data']->post;
echo $_product->post_title;
}
我可以得到那样的购物车项目名称。但由于以下原因,我不能这样做。我需要将购物车项目名称存储在一个数组中,该数组将被发送到我之前提到的第三方工具。
$sales_payload = array(
'organization_id' => $organization_id,
'contact_id' => $contact_id,
'status' => 'Open',
'subject' => I WANT THIS TO BE ALL THE PRODUCT HNAMES,
'start_date' => date("Y-m-d"), // set start date on today
'expected_closing_date' => date("Y-m-d",strtotime(date("Y-m-d")."+ 14 days")), // set expected closing date 2 weeks from now
'chance_to_score' => '10%',
'expected_revenue' => 0, //set the expected revenue
'note' => $_POST['order_comments'],
'progress' => array(
'id'=>'salesprogress:200a53bf6d2bbbfe' //fill a valid salesprogress id to set proper sales progress
),
"custom_fields" => [["actief_in_duitsland"=>$value]],
);
In my array there is an array key named "subject". I want all the cart item names stored here.
因此,例如,如果我订购了两个名为test 1的项目,另一个名为test 2,我希望这些项目存储在主题数组键中。
我不能在数组中使用foreach循环,也不能回复东西(我认为)
所以基本上我的问题是: 有没有办法做到这一点:
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$_product = $values['data']->post;
echo $_product->post_title;
}
在数组内部作为数组键值,因此该值将返回所有购物车项目名称。
我的尝试:
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$_product = $values['data']->post;
}
然后我在数组
中这样称呼它'subject' =>$_product->post_title
这只适用于一种产品,所以如果我有2种产品,它只会给我一个。
答案 0 :(得分:2)
$sales_payload = array(
'organization_id' => $organization_id,
'contact_id' => $contact_id,
'status' => 'Open',
'subject' => getproductList(), //<<<<<Method called here
'start_date' => date("Y-m-d"), // set start date on today
'expected_closing_date' => date("Y-m-d",strtotime(date("Y-m-d")."+ 14 days")), // set expected closing date 2 weeks from now
'chance_to_score' => '10%',
'expected_revenue' => 0, //set the expected revenue
'note' => $_POST['order_comments'],
'progress' => array(
'id'=>'salesprogress:200a53bf6d2bbbfe' //fill a valid salesprogress id to set proper sales progress
),
"custom_fields" => [["actief_in_duitsland"=>$value]],
);
现在,创建一个返回购物车产品列表的方法。
function getproductList()
{
global $woocommerce;
$items = $woocommerce->cart->get_cart();
$product_names=array();
foreach($items as $item => $values) {
$_product = $values['data']->post;
$product_names[]=$_product->post_title;
}
/*
// if you want string then use
$allproductname=implode("",$product_names);
return $allproductname;
*/
return $product_names;
}
答案 1 :(得分:2)
因此,您需要一系列购物车商品名称,您将发送给第三方工具。因此代码将非常紧凑:
// initializing the array:
$items_names = array();
// iterating through each items of cart
foreach(WC()->cart->get_cart() as $cart_item)
$items_names[] = $cart_item['data']->post->post_title;
现在,您可以在API中使用的 $items_names
变量中获取数组
此代码经过测试并正常运行。
要显示数组中逗号分隔值的字符串,可以使用
implode()
函数:$string_cart_item_names = implode( ', ', $items_names );
我希望它也会有所帮助。
答案 2 :(得分:1)
由于@Vasim方法是正确的,我只想指出在$product_name
后需要双括号来添加数组中的每个项目,否则只会添加最后一项。
$product_name[]= $_product->post_title;
如果你想要一个字符串而不是一个数组
$product_name .= $_product->post_title;