Я пытаюсь сделать столбцы «заказы» и «потраченные деньги» сортируемыми в отчетах 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;
}
}
}
спасибо за любую помощь!