Wordpress Woocommerce覆盖插件操作

Wordpress Woocommerce覆盖插件操作,wordpress,woocommerce,Wordpress,Woocommerce,文件email-order-items.php包含以下代码行: echo "\n" . sprintf( __( 'Cost: %s', 'woocommerce' ), $order->get_formatted_line_subtotal( $item ) ); 以下动作挂钩已添加到我正在使用的插件(Woocommerce复合产品): 我想覆盖函数wc\u cp\u order\u item\u subtotal来更改显示item subtotal的方式。我已经尝试将以下内容添加到我

文件email-order-items.php包含以下代码行:

echo "\n" . sprintf( __( 'Cost: %s', 'woocommerce' ), $order->get_formatted_line_subtotal( $item ) );
以下动作挂钩已添加到我正在使用的插件(Woocommerce复合产品):

我想覆盖函数wc\u cp\u order\u item\u subtotal来更改显示item subtotal的方式。我已经尝试将以下内容添加到我的child-theme-functions.php中,但没有任何效果

remove_action( 'woocommerce_order_formatted_line_subtotal', 'wc_cp_order_item_subtotal', 10);
add_action( 'woocommerce_order_formatted_line_subtotal', 'child_wc_cp_order_item_subtotal', 10,  3);

function child_wc_cp_add_order_item_meta( $order_item_id, $cart_item_values, $cart_item_key = '' ) {
    return 'xxxxxxx';
}

任何帮助我实现这一点的提示都将不胜感激。

这在法典中没有提到,但我通常从钩子调用
remove\u action()
函数

此外,正如从类添加的操作中所述,您需要访问类实例或变量

我在复合插件的任何地方都看不到
wc\u cp\u order\u item\u subtotal
,所以我猜你没有使用Woo的版本。在这种情况下,我无法访问代码,也无法确切地告诉您如何访问类变量

但如果您使用的是Woo的复合材料产品,则如下所示:

为复合材料2.4编辑

function so_remove_action(){
    global $woocommerce_composite_products;
    remove_action( 'woocommerce_order_formatted_line_subtotal', array( $woocommerce_composite_products->order, 'wc_cp_order_item_subtotal' ), 10, 3 ); //not sure why it isn't a filter, but also not sure if there is a huge difference
}
add_action('init', 'so_remove_action');

谢谢我使用的是官方的Woocommerce复合产品插件,但在版本2.4.0中,他们重构了代码并删除了对BTO的引用。我如何计算出我的$woocommerce\u bto->order->woocommerce\u bto的等价物是什么?看起来所有的'bto'都变成了'cp','woo'变成了'wc'。因此,整个插件的全局变量是
$woocommerce\u composite\u products
,而
WC\u CP\u Order()
类被初始化为主类的
Order
变量,因此
$woocommerce\u composite\u products->Order
。我不知道我从哪里得到了额外的
woocommerce\u bto
,可能复制/粘贴失败。
function so_remove_action(){
    global $woocommerce_composite_products;
    remove_action( 'woocommerce_order_formatted_line_subtotal', array( $woocommerce_composite_products->order, 'wc_cp_order_item_subtotal' ), 10, 3 ); //not sure why it isn't a filter, but also not sure if there is a huge difference
}
add_action('init', 'so_remove_action');