Wc-reports - customer_list: Как сортировать столбцы «заказы» и «потраченные деньги» - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь сделать столбцы «заказы» и «потраченные деньги» сортируемыми в отчетах woocommerce.

wc-reports & tab = Customers & report = customer_list

Теперь у меня есть

создать фильтр для woocommerce_admin_reports.В частности, нам нужно изменить обратный вызов отчетов со списком клиентов.Ниже это 'customer_list_get_report'.

add_filter( 'woocommerce_admin_reports', 'woocommerce_admin_reports' );
function woocommerce_admin_reports( $reports ) {

    $reports['customers']['reports']['customer_list']['callback'] = 'customer_list_get_report';

    return $reports;
}

, затем создайте функцию 'customer_list_get_report'.Эта функция генерирует отчеты.Обратите внимание на do_action, здесь мы включаем класс WC_Report_Customer_List, чтобы мы могли расширять его и перезаписывать некоторые из его функций.

function customer_list_get_report( $name ) {

    $class = 'My_WC_Report_Customer_List';

    do_action('class_wc_report_customer_list');

    if ( ! class_exists( $class ) )
        return;

    $report = new $class();
    $report->output_report();
}

Здесь, ниже, вы вносите свои изменения.

add_action( 'class_wc_report_customer_list', 'class_wc_report_customer_list' );
function class_wc_report_customer_list() {

    if ( ! class_exists( 'WC_Report_Customer_List' ) ) {
        include_once( WC_ABSPATH . 'includes/admin/reports/class-wc-report-customer-list.php' );
    }
    class My_WC_Report_Customer_List extends WC_Report_Customer_List {
        private function sort_data( $a, $b ) {
            // Set defaults
            $orderby = 'title';
            $order = 'asc';
            // If orderby is set, use this as the sort column
            if(!empty($_GET['orderby'])) {
                $orderby = $_GET['orderby'];
            }
            // If order is set use this as the order
            if(!empty($_GET['order'])) {
                $order = $_GET['order'];
            }
            $result = strcmp( $a[$orderby], $b[$orderby] );
            if($order === 'asc') {
                return $result;
            }
            return -$result;
        }
    }
}

спасибо за любую помощь!

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