Woocommerce统计客户订单和评论

问题描述 投票:0回答:1

我正在寻求一种方法来帮助您计算一种方法,该方法可以计算客户下达的订单数量,还可以计算客户通过产品ID留下的评论数量。

我有一个相当大的函数,其中包含大多数所需的参数,但是我似乎无法使这些计数起作用。最终目标是比较两个结果,然后触发一个事件。

$args = [
    'customer_id' => $user_id,
    'post_status' => 'completed',
    'post_type' => 'shop_order'
];
$query = new WP_Query($args);
$CustomerOrders = $query->found_posts;

//count reviews
$CustomerReviews = $wpdb->get_var( "
        SELECT COUNT(comment_ID) FROM {$wpdb->prefix}comments
        WHERE comment_post_ID = $product_id
        AND comment_author_email = '{$customer_email}'
    " );

    return $CustomerReviews;
if($CustomerReviews < $CustomerOrders)
{
//do stuff
}

更新:

我使用下面的代码段解决了订单数,但尚未解决“评论”数。另外,经过进一步考虑,我认为最好获得客户的总评论数而不是按产品ID。
$CustomerOrders = (array) wc_get_orders( array(
        'limit'        => -1,
        'status'       => 'completed',
        'customer_id' => $user,
    ) );

        if ( sizeof($CustomerOrders) > ..... )

更正:

那行不通。它在我的测试期间不应触发时触发。不太确定如果什么也没得到,那该算什么。在运行测试并尝试使审核计数正常工作时,我收到此错误Object of class WP_User could not be converted to string,因此我认为获取用户ID的方式可能有问题。
$user_id = $order->get_customer_id();
$user = get_user_by( 'ID', $user_id );

$ user在其他情况下工作正常。.所以我不知道为什么$ user_id对于查询不起作用。

已解决:

我不知道为什么我崩溃并张贴x)无论如何我总是最终要解决它,哈哈。如果其他人有兴趣,这是解决方案。
$CustomerOrders = (array) wc_get_orders( array(
        'limit'        => -1,
        'status'       => 'completed',
        'customer_id' => $order->get_customer_id(),
    ) );
$args = array(
        'user_id' => $confirmed_order->get_customer_id(),
        'comment_type' => 'review'
    );
    $CustomerReviews = get_comments( $args );
if (count($CustomerReviews) < sizeof($CustomerOrders) )
{
//do stuff
}

我正在寻求一种方法的帮助,该方法可以统计客户下的订单数量,还可以统计客户通过产品ID留下的评论数量。我有一个相当大的函数,它具有大多数...

woocommerce count orders review customer
1个回答
0
投票
$CustomerOrders = (array) wc_get_orders( array(
        'limit'        => -1,
        'status'       => 'completed',
        'customer_id' => $order->get_customer_id(),
    ) );
$args = array(
        'user_id' => $confirmed_order->get_customer_id(),
        'comment_type' => 'review'
    );
    $CustomerReviews = get_comments( $args );
if (count($CustomerReviews) < sizeof($CustomerOrders) )
{
//do stuff
}
© www.soinside.com 2019 - 2024. All rights reserved.