Как показать количество проданных продуктов woocommerce за последние 24 часа? - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь добавить функцию на страницу сведений о моем продукте. Я хочу, чтобы пользователь мог видеть количество проданных за последние 24 часа.

Например, я добавляю код в свой файл function.php

add_action( 'woocommerce_product_meta_start', 'bbloomer_product_sold_count', 11 );

function bbloomer_product_sold_count() {
   global $product;
   $units_sold = $product->get_total_sales();
   if ( $units_sold ) echo '<div class="itemSold">' . sprintf( __( '%s Sold Items', 'woocommerce' ), $units_sold ) . '</div>';
}

Это показывает мне все проданное количествоно я хочу последние 24 часа. Пожалуйста, объясните мне, как мы можем это сделать. Заранее спасибо.

1 Ответ

0 голосов
/ 15 октября 2019

в вашем случае вы можете запросить это руководство из базы данных и создать такую ​​функцию:

add_action( 'woocommerce_product_meta_start', 'bbloomer_product_sold_count', 11 );

function bbloomer_product_sold_count() {
    global $product;
    global $wpdb;

    $product_id = $product->id();
    $date_to = date("Y-m-d H:i:s", strtotime('+24 hours'));
    $date_from = date("Y-m-d H:i:s");

    $sql = "
    SELECT COUNT(*) AS sale_count
    FROM {$wpdb->prefix}woocommerce_order_items AS order_items
    INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS order_meta ON order_items.order_item_id = order_meta.order_item_id
    INNER JOIN {$wpdb->posts} AS posts ON order_meta.meta_value = posts.ID
    WHERE order_items.order_item_type = 'line_item'
    AND order_meta.meta_key = '_product_id'
    AND order_meta.meta_value = %d
    AND order_items.order_id IN (
        SELECT posts.ID AS post_id
        FROM {$wpdb->posts} AS posts
        WHERE posts.post_type = 'shop_order'
            AND posts.post_status IN ('wc-completed','wc-processing')
            AND DATE(posts.post_date) BETWEEN %s AND %s
    )
    GROUP BY order_meta.meta_value";
    $units_sold = $wpdb->get_var($wpdb->prepare($sql, $product_id, $date_from, $date_to));
    if ( $units_sold ) echo '<div class="itemSold">' . sprintf( __( '%s Sold Items', 'woocommerce' ), $units_sold ) . '</div>';
}

, потому что woocommerce не предоставляет функцию для вашего случая

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...