Maybe you could try to wrap your overriding function with the function_exists().
Something like this: link
Thread Starter
easyp
(@easyp)
Thanks. I tried that, but it just ignores it… I guess because it already exists, so doesn’t look at it.
You can’t override any existing function. But you can check the code inside the function if it uses some hooks then use it to change the result of that function.
OR you may be able to establish a filter which can transform the html as it “goes past”.
Here’s one alternative to explore (be sure to be using a child theme):
First, find which WooCommerce template file you want to deal with and override it. Here’s documentation on this: Overriding WooCommerce Templates Safely
Then, create your own function in functions.php similar to that of the WooCommerce function you want to modify and call it in your custom template file.
It’s an old topic, but maybe I could help a bit. I had similar problem. I wanted to override currencies, and add a custom currency. The functions are in woocommerce/includes/wc-core-functions.php
function get_woocommerce_currencies() {
return array_unique(
apply_filters( 'woocommerce_currencies',
array(
… and so on
The other function is:
function get_woocommerce_currency_symbol( $currency = '' ) {
if ( ! $currency ) {
$currency = get_woocommerce_currency();
}
switch ( $currency ) {
...
return apply_filters( 'woocommerce_currency_symbol', $currency_symbol, $currency );
This is the code I’ve put in functions.php of my child theme:
add_filter( 'woocommerce_currencies', 'add_my_currency' );
function add_my_currency( $currencies ) {
$currencies['RSD'] = __( 'Serbian dinar', 'woocommerce' );
return $currencies;
}
add_filter('woocommerce_currency_symbol', 'add_my_currency_symbol', 10, 2);
function add_my_currency_symbol( $currency_symbol, $currency ) {
switch( $currency ) {
case 'RSD': $currency_symbol = 'RSD'; break;
}
return $currency_symbol;
}
This would be the code for changing wc_cart_totals_order_total_html function (to be placed in child theme functions.php):
add_filter('woocommerce_cart_totals_order_total_html','test_func');
function test_func() {
$value = '<strong>Test' . WC()->cart->get_total() . '</strong> ';
return $value;
}
It adds ‘Test’ to total amount.