在子主题中重新声明功能

时间:2018-11-22 10:49:05

标签: php wordpress function

P.S。嗨,管理员,我试图寻找解决方案,但在任何地方都找不到相同的问题!

大家好,

我有一个儿童主题。如果!function_exists如下,我有一个包装的函数。其中的文件包括文件夹。该功能位于wp-content / themes / themename / includes / alias-function.php

 if (!function_exists('jem_render_buy_fee ')) {
function jem_render_buy_fee() {
    $fee=(ea_get_option('order_commission_buyer'))?ea_get_option('order_commission_buyer'):'';
    if($fee){
        ?>
        <div class="jem-commission-fee">
            <span><?php _e($fee.'% commission fee included', 'themes'); ?></span>
        </div>
        <?php
    }
}
}

因为它在include文件夹中,但包装在function_exists中,所以我在下面的functions.php中声明了该函数。该文件位于wp-content / themes / themename-child / functions.php

function jem_render_buy_fee() {
    $fee=(ea_get_option('order_commission_buyer'))?ea_get_option('order_commission_buyer'):'';
    if($fee){
        ?>
        <div class="jem-commission-fee">
            <span><?php _e($fee.'% GST inclusive', 'themes'); ?></span>
        </div>
        <?php
    }
}

我遇到了错误:

Your PHP code changes were rolled back due to an error on line 1873 of file wp-content/themes/themename/includes/alias-function.php. Please fix and try saving again.

Cannot redeclare jem_render_buy_fee() (previously declared in wp-content/themes/themename-child/functions.php:215)

我为什么要得到这个?该错误包含在function_exist中。

我可以看到它正在加载function.php,但是它应该忽略文件中现有的那个。

谢谢。

1 个答案:

答案 0 :(得分:0)

在检查函数是否存在时,函数名称后面有一个空格。 !function_exists('jem_render_buy_fee ')

如果调用代码的顺序正确,那么没有此空间应该可以正常工作。

首次通话:

function jem_render_buy_fee() {
    $fee=(ea_get_option('order_commission_buyer'))?ea_get_option('order_commission_buyer'):'';
    if($fee){
        ?>
        <div class="jem-commission-fee">
            <span><?php _e($fee.'% GST inclusive', 'themes'); ?></span>
        </div>
        <?php
    }
}

然后致电:

<?php
if (!function_exists('jem_render_buy_fee')) { //Space removed from 'jem_render_buy_fee '
    function jem_render_buy_fee() {
        $fee=(ea_get_option('order_commission_buyer'))?ea_get_option('order_commission_buyer'):'';
        if ($fee): ?>
            <div class="jem-commission-fee">
                <span><?php _e($fee.'% commission fee included', 'themes'); ?></span>
            </div>
        <?php endif;
    }
}