获取所有woocommerce购物车项目名称

时间:2016-12-08 12:43:55

标签: php wordpress woocommerce cart

我正在尝试将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种产品,它只会给我一个。

3 个答案:

答案 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;