WooCommerce - 通过主题覆盖 wc-formatting-functions.php 文件不起作用

WooCommerce - Overriding wc-formatting-functions.php file via theme is not working

当我在 WooCommerce 插件文件夹中更改核心文件时,我试图将我的代码包含在 wc-formatting-functions.php 文件中,并且它正在运行。

现在我已经在主题文件夹中创建了 woocommerce 文件夹,并在其中复制了 wc-formatting-functions.php 文件,试图覆盖,但它不工作。

我正在尝试将此代码插入 wc_price() 函数中:

if(is_product_category('mattress')){
    echo "mattress category";
}
else if(is_product_category('pillows')){
    echo "pillows category";
}
else if(is_product_category('protectors')){
    echo "protectors category";
}
else if(is_product_category('toppers')){
    echo "toppers category";
}
else if(is_product_category('foldable-mattress')){
   echo "foldable-mattress category";
}

在 wc-formatting 中的这些行之后-functions.php:

$formatted_price = ( $negative ? '-' : '' ) . sprintf( $price_format, '<span class="woocommerce-Price-currencySymbol">' . get_woocommerce_currency_symbol( $currency ) . '</span>', $price );
$return = '<span class="woocommerce-Price-amount amount">' . $formatted_price . '</span>';

我做错了什么?

因为 wc-formatting-functions.phpWooCommerce 核心 文件而不是 模板 文件,您将无法在主题文件夹内的 woocommerce 文件夹中使用它。

Is not possible to override wc-formatting-functions.php core file as a template file via a theme.

根据您想在何处使用您的代码,您可以尝试在相关的挂钩中使用它,例如:

add_filter( 'woocommerce_cart_product_price', 'filter_woocommerce_cart_product_price', 10, 2 ); 
function filter_woocommerce_cart_product_price( $wc_price, $product ) { 
    // some code 
    return $wc_price; 
}; 

作为 is_product_category() 条件目标类别页面存档,您可以覆盖相关的 woocommerce 模板,具体取决于您要在何处使用代码。

您甚至可以将代码插入活动主题的 function.php 文件中,嵌入到您可以重复使用的函数中。

但是如果你想用条件定位某个类别,你将不得不使用 has_term( 'mattress', 'product_cat' ) 来代替。

参考文献: