Отображение общего количества покупок определенного продукта для клиента в Woocommerce

В Woocommerce я хотел бы показать общее количество определенного продукта на странице, отличной от продукта для текущего клиента.

Итак, я попытался изменить код ответа из этой ветки:
Общее количество покупок по продуктам для текущего пользователя в Woocommerce

Но я не знаю, как установить идентификатор продукта, поскольку функция использует глобальную переменную product.

Любая помощь приветствуется

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
611
1

Ответы 1

Вам просто нужно немного изменить функцию, например:

function wc_product_sold_count( $product_id ) {
    // Only for logged in users
    if ( ! is_user_logged_in() ) return; // Exit for non logged users

    $user_id = get_current_user_id(); // Current User 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

        // Returned output
        return '<p class = "units-bought"><strong>' . $label . ': </strong>' . $units_bought . '</p>';
    }
}

// The shortcode from this function
add_shortcode('product_sold_count', 'shortcode_product_sold_count');
function shortcode_product_sold_count( $atts ) {
    $atts = shortcode_atts( array(
        'id' => '',
    ), $atts, 'product_sold_count' );

    return wc_product_sold_count( $atts['id'] );
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Проверено и работает.


Примеры использования:

1) Как шорткод на странице в текстовом редакторе Wordpress (замените 37 на свой идентификатор продукта):

[product_sold_count id = "37"]

2) В любом php коде (замените 37 на свой идентификатор продукта):

echo wc_product_sold_count( 37 );

Другие вопросы по теме