Wordpress 如何从 wc_admin_report 覆盖函数 get_order_report_data
Wordpress how to override function get_order_report_data from wc_admin_report
我想在 class-wc-admin-report.php
中更改 get_order_report_data()
函数的一部分而不触及核心。
我想更改订单状态过滤器,现在是:
$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
。
我现在不知道如何使用插件或类似的东西来做到这一点
此处应用了过滤器,您可以根据需要更改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');
这个问题看起来有点糊涂,但这是我最好的解释。
如果要在查询中添加要捕获的自定义状态,请编写如下过滤函数:
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
或自定义插件代码中。
我想在 class-wc-admin-report.php
中更改 get_order_report_data()
函数的一部分而不触及核心。
我想更改订单状态过滤器,现在是:
$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
。
我现在不知道如何使用插件或类似的东西来做到这一点
此处应用了过滤器,您可以根据需要更改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');
这个问题看起来有点糊涂,但这是我最好的解释。
如果要在查询中添加要捕获的自定义状态,请编写如下过滤函数:
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
或自定义插件代码中。