这是我从每个订单获取电子邮件地址的代码:
function callback() {
$args = array('return' => 'ids' );
$query = new WC_Order_Query( $args );
$orders = $query->get_orders();
$emails_array = [];
foreach( $orders as $order_id ) {
$order = wc_get_order( $order_id );
$order_ids = $order->get_id();
$billing_email = $order->get_billing_email();
$emails_array[] = $billing_email;
echo implode( ',', $emails_array );
//echo json_encode( $billing_email );
// implode(',', $billing_email );
}
}
输出这个:
[email protected]@example.com
我需要在每个电子邮件地址之间添加逗号并生成如下列表:
[email protected],[email protected]
我尝试过 json_encode、implode、explode 和存储像这样的数组 $billing_email[] = some 但不知道该怎么做。
更新:我已更新代码,但在电子邮件列表中出现重复项。
当我使用 json_encode 时,我得到这个;
使用
array_unique()
避免重复的电子邮件。我也简化了你的代码:
function callback() {
$emails = array(); // Initialize
$args = [ 'limit' => -1, 'type' => 'shop_order' ];
foreach( wc_get_orders($args) as $order ) {
$emails[] = $order->get_billing_email();
}
echo implode( ',', array_unique( $emails ) );
}
已测试且有效。