我有一个产品ID数组
$products_ids = array(183,185,101);
我有用户ID列表
$user_ids= array(142,234,236);
我想随机获得一个用户的帖子,但我必须检查用户(按ID)是否带来了任何产品(按ID)。
此功能用于检查用户是否购买了产品:
wc_customer_bought_product( $user_id, $product_id );
但我无法将数组传递给它。如果我能够通过检查产品ID从$user\\u id中删除数组元素,我有一个随机获取帖子的解决方案。
$current_user_posts = get_posts( [
\'author__in\' => $authors,
\'orderby\' => \'random\',
\'post_per_page\' => \'1\',
\'order\' => \'ASC\'
] );
我应该采取什么方法使它工作?
谢谢
最合适的回答,由SO网友:Sally CJ 整理而成
但我无法将数组传递给它。如果我能够通过检查产品ID从$user\\u id中删除数组元素,我有一个随机获取帖子的解决方案。
是的wc_customer_bought_product()
函数仅接受单个用户/产品ID。
但你可以通过$user_ids
数组,对于每个用户(ID),循环$product_ids
然后打电话给wc_customer_bought_product()
函数,如下所示:
$authors = array();
foreach ( $user_ids as $user_id ) {
foreach ( $product_ids as $product_id ) {
// User alread checked.
if ( in_array( $user_id, $authors ) ) {
continue;
}
if ( wc_customer_bought_product( \'\', $user_id, $product_id ) ) {
$authors[] = $user_id;
}
}
}
var_dump( $authors ); // testing
附加注释
wc_customer_bought_product()
接受三个参数:
wc_customer_bought_product( $customer_email, $user_id, $product_id );
您只能提供
$customer_email
或
$user_id
, 或者两者兼而有之。
而且wc_customer_bought_product()
退货true
仅适用于以下订单complete 而不是等待、处理等。