Я хочу изменить часть get_order_report_data()
функция внутри class-wc-admin-report.php
не касаясь ядра.
Я хотел бы изменить фильтр статуса заказа, прямо сейчас это:
$query['where'] = "WHERE posts.post_type = 'shop_order'
AND posts.post_status = 'publish'
AND tax.taxonomy = 'shop_order_status'
AND term.slug IN ('" . implode( "','", apply_filters( 'woocommerce_reports_order_statuses', array( 'completed', 'processing', 'on-hold' ) ) ) . "')
";
И я хочу изменить term.slug в custom_status
,
Я не знаю, как это сделать с помощью плагина или чего-то подобного
Этот вопрос кажется немного запутанным, но вот моя лучшая интерпретация.
Если вы хотите добавить пользовательский статус для захвата в запросе, напишите функцию фильтра следующим образом:
function woocommerce_reports_order_statuses_filter( $order_status ){
$order_status[] = 'custom_status';
return $order_status;
}
add_filter( 'woocommerce_reports_order_statuses', 'woocommerce_reports_order_statuses_filter' );
Позже в функции все статусы в этом массиве будут добавлены к их значениям для текущей строки запроса. Таким образом, вам понадобится ваш статус, чтобы иметь этот префикс. Или … вы можете изменить строку запроса с помощью более позднего фильтра:
function woocommerce_reports_get_order_report_query_filter( $query ){
$custom_status = 'custom_status';
$query['where'] = substr_replace( $query['where'], $custom_status , strpos( $query['where'], 'wc-' . $custom_status), strlen('wc-' . $custom_status) );
return $query;
}
add_filter( 'woocommerce_reports_get_order_report_query', 'woocommerce_reports_get_order_report_query_filter' );
Весь этот код фильтра добавляется в вашу тему functions.php
или пользовательский код плагина.
Здесь применяются фильтры, которые позволят вам изменить term.slug
как бы ты ни хотел.
В пользовательском плагине (или functions.php вашей темы), добавьте фильтр:
function override_order_report_data_terms($slug_array) {
return array('custom_status');
}
add_filter('woocommerce_reports_order_statuses', 'override_order_report_data_terms');
Узнайте больше о add_filter()
в Кодексе.