Переопределить функции в разделе отчетов Woocommerce

Мне нужно настроить отчеты в WooCommerce, поэтому мне нужно отредактировать основной файл class-wc-report-sales-by-date.php, такой файл не использует никаких хуков.

Проверьте это в исходном коде WC: includes/admin/reports/class-wc-report-sales-by-date.php

Мне нужно отредактировать строку 393, эту переменную: $this->report_data->total_sales. Мне нужно настроить сумму Total Sales, чтобы добавить другое значение.

Как я могу переопределить этот основной файл WooCommerce?


person Andrés Posada Llano    schedule 23.11.2017    source источник


Ответы (1)


Никогда не переопределяйте основные файлы… Для этого есть другие способы. Если вы посмотрите на line 411, у вас есть фильтр-хук woocommerce_admin_report_data для внесения изменений, например (пример):

add_filter( 'woocommerce_admin_report_data', 'custom_admin_report_data', 10, 1 );
function custom_admin_report_data( $report_data ){
    // HERE you make your calculations and changes
    // New amout to set (example)
    $new_calculated_amount = 100;

    // Set the new amounts for "total_sales" key
    $report_data->total_sales = $new_calculated_amount;

    // Raw data output just for testing, to get the keys and the structure of the data
    // to be removed
    echo '<pre>'; print_r($report_data); echo '</pre>';

    // Return the changed data object
    return $report_data;
}

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

Проверено и работает.

Я включил строку кода, которая выводит необработанные данные, которые вы должны удалить… Это просто для того, чтобы увидеть структуру данных и изменения, внесенные функцией в значение "total_sales"


Вывод необработанных данных выглядит примерно так: (который дает вам структуру данных для более удобного внесения изменений):

stdClass Object
(
    [order_counts] => Array
        (
            [0] => stdClass Object
                (
                    [count] => 1
                    [post_date] => 2017-11-21 16:45:43
                )
        )
    [coupons] => Array
        (
        )
    [order_items] => Array
        (
            [0] => stdClass Object
                (
                    [order_item_count] => 1
                    [post_date] => 2017-11-21 16:45:43
                )
        )
    [refunded_order_items] => 0
    [orders] => Array
        (
            [0] => stdClass Object
                (
                    [total_sales] => 48
                    [total_shipping] => 15
                    [total_tax] => 5
                    [total_shipping_tax] => 3
                    [post_date] => 2017-11-21 16:45:43
                )
        )
    [full_refunds] => Array
        (
        )
    [partial_refunds] => Array
        (
        )
    [refund_lines] => Array
        (
        )
    [total_tax_refunded] => 0
    [total_shipping_refunded] => 0
    [total_shipping_tax_refunded] => 0
    [total_refunds] => 0
    [total_tax] => 5.00
    [total_shipping] => 15.00
    [total_shipping_tax] => 3.00
    [total_sales] => 48.00
    [net_sales] => 25.00
    [average_sales] => 3.57
    [average_total_sales] => 6.86
    [total_coupons] => 0.00
    [total_refunded_orders] => 0
    [total_orders] => 1
    [total_items] => 1
)

Итак, как вы можете видеть, вам также необходимо внести изменения в данные объекта заказов, поскольку у вас также есть ключ "total_sales"

person LoicTheAztec    schedule 23.11.2017
comment
Спасибо. Это то, что мне нужно. Я очень ценю ваше время и помощь :) - person Andrés Posada Llano; 24.11.2017
comment
Можно ли также манипулировать данными или добавлять дополнительные элементы на боковую панель/легенду диаграммы в разделе «Продажи по продуктам», этот фильтр влияет только на «Продажи по дате»? - person no.; 19.02.2020