如何定义已在插件函数中定义的变量?

时间:2019-11-21 作者:Gregory

我正在使用一个主题,以美元货币显示酒店房间。但是,我希望显示欧元作为货币。

当主题开发人员要求时,请在WooCommerce中定义货币。这很好用,因为主题使用它来显示货币。

也许,我们在这个网站上不使用WooCommerce,所以当我停用WooCommerce时,货币会回到美元!

主题开发人员不知道如何处理这个问题。所以我开始寻找。

如果没有安装woocommerce,我确实找到了定义货币的函数。它附带了一个链接到主题的插件。

    if ( ! function_exists(\'mkdf_hotel_room_get_currency\') ) {
    /**
     * Get currency
     * @return string of currency that is used in woocommerce or default currency
     */
    function mkdf_hotel_room_get_currency() {
        $currency = \'$\'; // default currency if woocommerce is not installed
        if ( fivestar_mikado_is_woocommerce_installed() ) {
            $currency = get_woocommerce_currency_symbol( get_woocommerce_currency() );
        }

        return $currency;
    }
}
现在的问题是,我如何通过我的函数来更改这种货币。php?我不想在这段代码中更改它来处理更新。

1 个回复
最合适的回答,由SO网友:STEAMworks Learning Center 整理而成

这相当容易。首先,需要使用子主题。如果您不确定儿童主题是什么或如何使用,请参阅以下儿童主题。

https://developer.wordpress.org/themes/advanced-topics/child-themes/

您正在使用的主题使用可插入函数,这使得它们易于重写。

注意主题中的函数是这样写的。。。

<?php
if ( ! function_exists ( \'my_function\' ) ) { // This is the function name \'my_function\' you will use in your child theme
    function my_function() {
        // Contents of function.
    }
}
?>
您所要做的就是在子主题中使用相同的名称创建您自己的函数——如下所示。

<?php
function my_function() { // Note: This is the same function name \'my_function\' used above
    // Contents for your function override here.
}
?>
因此,您所需要做的就是将此函数添加到子主题中。

<?php
function mkdf_hotel_room_get_currency() {
    $currency = \'€\'; // default currency if woocommerce is not installed
    if ( fivestar_mikado_is_woocommerce_installed() ) {
        $currency = get_woocommerce_currency_symbol( get_woocommerce_currency() );
    }

    return $currency;
}
?>
根据您的主题更新问题,它不会受到影响,因为更改是在您的子主题中,而不是在父主题中。

祝你好运,希望这有帮助。

最好的

提姆