php - WordPress如何覆盖wc_admin_report中的函数get_order_report_data

标签 php wordpress woocommerce status

我想在不触及核心的情况下更改 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

我现在不知道如何使用插件或类似的东西来做到这一点

最佳答案

这个问题看起来有点困惑,但这是我最好的解释。

如果您想添加自定义状态以在查询中捕获,请编写如下过滤器函数:

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 或自定义插件代码中。

关于php - WordPress如何覆盖wc_admin_report中的函数get_order_report_data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726299/

相关文章:

wordpress - WooCommerce - 添加对象术语无法正常工作

wordpress - 如何从 Photoswipe WooCommerce 图片库隐藏图像标题?

php - 选择....用于更新和 if 语句与 php

PHP、JOIN 和 Laravel - 如何在连接表时分隔数组

javascript - 使用 AJAX 运行 PHP 脚本然后返回单个值

php - 当前分页链接未激活,下一页、上一页不起作用

wordpress - 在提交联系表单 7 时调用 JavaScript 函数

wordpress - 直接在 HTTPS 中安装 WordPress(已经安装了 SSL)

php - 在 WooCommerce WC_Product get_description() 方法中启用简码使用

wordpress - 将 woocommerce 产品连接到帖子