Ganti fungsi di bagian Laporan Woocommerce

Saya perlu menyesuaikan Laporan di WooCommerce, jadi saya harus mengedit file inti class-wc-report-sales-by-date.php, file tersebut tidak menggunakan pengait apa pun.

Periksa ini di kode sumber WC: termasuk/admin/reports/class-wc-report-sales-by-date.php

Saya harus mengedit baris 393, variabel ini: $this->report_data->total_sales Saya perlu menyesuaikan jumlah Total Penjualan untuk menambahkan nilai lain.

Bagaimana saya bisa mengganti file inti WooCommerce ini?


person Andrés Posada Llano    schedule 23.11.2017    source sumber


Jawaban (1)


Jangan pernah menimpa file inti… Ada cara lain yang dibuat untuk itu. Jika Anda melihat line 411, Anda memiliki woocommerce_admin_report_data kait filter untuk melakukan perubahan, dengan cara ini (contoh):

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;
}

Kode masuk ke file function.php dari tema anak aktif Anda (atau tema) atau juga di file plugin apa pun.

Diuji dan berfungsi.

Saya telah menyertakan sebaris kode yang menampilkan data mentah yang harus Anda hapus… Hanya untuk melihat struktur data dan perubahan yang dilakukan oleh fungsi pada nilai "total_sales"


Output data mentahnya kira-kira seperti ini (yang memberi Anda struktur data untuk melakukan perubahan dengan lebih baik):

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
)

Jadi seperti yang Anda lihat, Anda juga perlu membuat perubahan pada data objek pesanan karena Anda juga memiliki kunci "total_sales"

person LoicTheAztec    schedule 23.11.2017
comment
Terima kasih. Itulah yang saya butuhkan. Saya sangat menghargai waktu dan bantuan Anda :) - person Andrés Posada Llano; 24.11.2017
comment
Apakah ini juga memungkinkan untuk memanipulasi data atau menambahkan item tambahan ke sidebar/legenda bagan di 'Penjualan berdasarkan Produk', filter ini hanya memengaruhi 'Penjualan berdasarkan Tanggal'? - person no.; 19.02.2020