在 WooCommerce 插件中禁用 public 功能

Disable public function in WooCommerce plugin

我正在使用 Woocommerce Admin 自定义订单字段插件,这在后端搜索订单时会导致问题。当我 运行 对管理订单搜索功能进行缓慢查询时,它会搜索这些自定义字段并增加 10 秒左右的搜索时间。

我找到了使用插件执行此操作的功能,我正在尝试找出禁用搜索中包含的自定义字段的最佳方法。

当我注释掉这段代码时,搜索很快,几秒钟。我想在我的 functions.php

中添加覆盖或以某种方式禁用它
public function add_search_fields( $search_fields ) {

    foreach ( wc_admin_custom_order_fields()->get_order_fields() as $order_field ) {

        if ( 'date' === $order_field->type  ) {
            array_push( $search_fields, $order_field->get_meta_key() . '_formatted' );
        } else {
            array_push( $search_fields, $order_field->get_meta_key() );
        }
    }

    return $search_fields;
}

任何人都可以告诉我如何在不直接编辑插件文件的情况下停止执行吗? 干杯 尼克

不要注释所有函数代码,只注释函数内部的活动代码,如:

public function add_search_fields( $search_fields ) {
    /* 
    foreach ( wc_admin_custom_order_fields()->get_order_fields() as $order_field ) {

        /* if ( 'date' === $order_field->type  ) {
            array_push( $search_fields, $order_field->get_meta_key() . '_formatted' );
        } else {
            array_push( $search_fields, $order_field->get_meta_key() );
        }
    }
    */  
    return $search_fields;
}

现在这个函数不会有任何效果,因为它的活动代码被注释了。

现在真的要避免覆盖任何核心插件代码…总是有不同的方法来改变事情,比如使用可用的钩子和其他事情可能更复杂…