我想找出我的Woo Commerce客户中有哪些在x天内没有向我订购,并向他们发送一封提醒电子邮件,说明与商店相关的事情。
我希望能够做一个用户元查询,以获取所有不活跃的用户。
尝试避免执行更昂贵的方法,即获取某个范围内的所有订单,然后使用此查询将它们与最近的订单进行比较,以查看哪些用户不在最近的订单中...
$orders_query = array(
'fields' => 'ids',
'post_type' => 'shop_order',
'post_status' => 'wc-completed',
'nopaging' => true,
'posts_per_page' => -1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => '_completed_date',
'value' => $fromDate,
'compare' => '>=',
'type' => 'DATETIME'
),
array(
'key' => '_completed_date',
'value' => $toDate,
'compare' => '<=',
'type' => 'DATETIME'
)
) //AND
);
$result = get_posts($orders_query);Woo Commerce是否为用户最后一次购买添加了任何元数据?
我在文档/数据库挖掘中找不到任何东西。
发布于 2019-09-04 21:58:02
Woocommerce确实会为用户的最后一次活动时间保存一个元值。它是一个时间戳--元键是"wc_last_active“。据我所知,只要用户登录或他们的订单更新(包括下单),代码就会更新。我不确定这是否能达到你的目的?
如果你担心的是这个查询的效率,你也可以自己保存这个元数据?在下订单时,您可以简单地为最后一个订单添加您自己的元值。当您需要提取要显示的数据时,这将使它变得更容易。
希望这能有所帮助!
发布于 2021-02-03 19:21:01
晚到派对但为了未来的Google-er
今天我不得不检查用户meta中保存了什么,发现了这个信息的平静:_last_order和其他一些人在meta中。要获取日期,您只需执行以下操作:
$order = wc_get_order( $order_id );
$date = $order->get_date_created();:)希望这能帮上忙

https://stackoverflow.com/questions/57784532
复制相似问题