[英]Wordpress how to override function get_order_report_data from wc_admin_report
我想在class-wc-admin-report.php
更改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' );
稍后在該函數中,該數組中的所有狀態都會將“wc-”附加到實際查詢字符串的值中。 因此,您需要您的狀態才能擁有該前綴。 或者......您可以使用以后的過濾器修改查詢字符串:
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()
更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.