• Всем доброго времени!

    В админ части, в разделе Заказы, есть статистика заказов (сколько всего заказов). http://joxi.ru/823EPzBU6M0aJr

    Как вывести это значение на Главную страницу сайта?

    Заранее спасибо.

    С Уважением к Вам и Вашему делу.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Приветствую.
    Я долго сам искал решение и нашёл выход.
    В function.php добавляешь кусок кода темы woocommerce, отвечающий за эти подсчёты. Я его добавил полностью, чтобы точно всё работало. Названия функций слегка поменял, чтобы не пересекались с названиями функций родительской темы.

    /* Считаем кол-во заказов*/
    function wp_get_order_statuses() {
    $order_statuses = array(
    ‘wc-pending’ => _x( ‘Pending payment’, ‘Order status’, ‘woocommerce’ ),
    ‘wc-processing’ => _x( ‘Processing’, ‘Order status’, ‘woocommerce’ ),/*Обрабатывается*/
    ‘wc-on-hold’ => _x( ‘On hold’, ‘Order status’, ‘woocommerce’ ),/* На удержании*/
    ‘wc-completed’ => _x( ‘Completed’, ‘Order status’, ‘woocommerce’ ),/*Завершено*/
    ‘wc-cancelled’ => _x( ‘Cancelled’, ‘Order status’, ‘woocommerce’ ),
    ‘wc-refunded’ => _x( ‘Refunded’, ‘Order status’, ‘woocommerce’ ),
    ‘wc-failed’ => _x( ‘Failed’, ‘Order status’, ‘woocommerce’ ),
    );
    return apply_filters( ‘wc_order_statuses’, $order_statuses );
    }
    function wp_orders_count_inf( $status ) {
    $count = 0;
    $status = ‘wc-‘ . $status;
    $order_statuses = array_keys( wp_get_order_statuses() );

    if ( ! in_array( $status, $order_statuses ) ) {
    return 0; }

    $cache_key = WC_Cache_Helper::get_cache_prefix( ‘orders’ ) . $status;
    $cached_count = wp_cache_get( $cache_key, ‘counts’ );

    if ( false !== $cached_count ) {
    return $cached_count; }

    foreach ( wc_get_order_types( ‘order-count’ ) as $type ) {
    $data_store = WC_Data_Store::load( ‘shop_order’ === $type ? ‘order’ : $type );
    if ( $data_store ) {
    $count += $data_store->get_order_count( $status ); }
    }

    wp_cache_set( $cache_key, $count, ‘counts’ );
    return $count;
    }
    А в тексте ставишь запускаешь функцию: echo wp_orders_count_inf(***)
    Где вместо *** — ставишь статус заказа, который требуется (они в первой функции указаны)
    Например: echo wp_orders_count_inf(completed)
    Единственное, что у меня почему-то не считается кол-во заказов «on-hold», т.е. на удержании. Постоянно 0 показывает.

    • Ответ изменён 6 лет, 7 месяцев назад пользователем noxicus. Причина: Дополнительная информация

    Или можешь просто использовать функцию из темы, не внося ничего в свой файл function.php
    echo wc_orders_count( $status )
    а этот $status выбирай из:
    pending — Pending payment
    processing — Processing (Обрабатывается — нормально считает)
    on-hold — On Hold (в ожидании — у меня не воспринимает почему-то)
    completed — Completed (Завершённые — нормально считает)
    cancelled — Cancelled
    refunded — Refunded
    failed — Failed
    Функция сама возвращает числовое значение, и без «echo» ничего писать не будет, Зато можно посчитать общее кол-во заказов… типа:
    echo wc_orders_count(processing)+wc_orders_count(on-hold)+wc_orders_count(completed)
    Повторюсь, кол-во «on-hold» почему-то не учитывается… не пойму пока
    пробуй)

    • Ответ изменён 6 лет, 7 месяцев назад пользователем noxicus. Причина: редактирование кода
    Модератор Юрій

    (@yube)

    Например: echo wp_orders_count_inf(completed)

    Именно так?

    Единственное, что у меня почему-то не считается кол-во заказов «on-hold»

    Это единственный статус с минусом. Попробуйте вызывать с правильным синтаксисом — с кавычками
    echo wp_orders_count_inf('on-hold');

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Как вывести количество заказов на главную?» закрыта для новых ответов.