Woocommerce中当前用户的产品总购买数量

时间:2018-03-08 23:24:23

标签: php sql wordpress woocommerce product

在Woocommerce中,我想在单个产品页面中显示当前用户的总购买产品数量。例如,如果约翰买了2次笔,那么它会显示约翰用户在此产品页面中的计数(" 2"),如果杰克买了它5次,那么它将显示杰克用户的产品页面中有5个。

我不想要打印总销售数量,我想根据当前登录用户显示。

我在function.php文件中的实际代码:

centerText("A short title")

1 个答案:

答案 0 :(得分:1)

在钩子函数中使用非常轻的SQL查询可以轻松完成:

add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count', 11 );
function wc_product_sold_count() {
    // Only for logged in users
    if ( ! is_user_logged_in() ) return; // Exit for non logged users

    global $wpdb, $product;

    $user_id = get_current_user_id(); // Current User ID
    $product_id = $product->get_id(); // Current Product ID

    // The SQL request
    $units_bought = $wpdb->get_var( "
        SELECT SUM(woim2.meta_value)
        FROM {$wpdb->prefix}woocommerce_order_items AS woi
        INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta woim ON woi.order_item_id = woim.order_item_id
        INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta woim2 ON woi.order_item_id = woim2.order_item_id
        INNER JOIN {$wpdb->prefix}postmeta pm ON woi.order_id = pm.post_id
        INNER JOIN {$wpdb->prefix}posts AS p ON woi.order_id = p.ID
        WHERE woi.order_item_type LIKE 'line_item'
        AND p.post_type LIKE 'shop_order'
        AND p.post_status IN ('wc-completed','wc-processing')
        AND pm.meta_key = '_customer_user'
        AND pm.meta_value = '$user_id'
        AND woim.meta_key = '_product_id'
        AND woim.meta_value = '$product_id'
        AND woim2.meta_key = '_qty'
    ");

    // Display count if is greater than zero
    if( $units_bought > 0 ){
        $label = __( 'Units bought' , 'woocommerce' ); // Label

        // Output
        echo '<p class="units-bought"><strong>' . $label . ': </strong>' . $units_bought . '</p>';
    }
}

代码进入活动子主题(或活动主题)的function.php文件。经过测试并正常工作。

enter image description here