【问题标题】:Replace a function of wordpress parent theme inside functions.php替换functions.php里面wordpress父主题的一个函数
【发布时间】:2021-04-21 22:24:15
【问题描述】:

对于这个确切的问题没有具体的答案,所以我要试试这个。

所以在 wordpress 网站的父主题中有一个名为 helpers-icons.php 的 php 文件。该文件的确切路径为/wp-content/themes/parent/inc/helpers/helpers-icons.php,该文件的内容为

function get_flatsome_icon($name, $size = null) {
  if($size) $size = 'style="font-size:'.$size.';"';
  return '<i class="'.$name.'" '.$size.'></i>';
}

该文件随后包含在该父主题的functions.php 中。

现在我想重写里面的一个函数,更具体一点,就是这行代码 return '&lt;i class="'.$name.'" '.$size.'&gt;&lt;/i&gt;';return '&lt;span class="'.$name.'" '.$size.'&gt;&lt;/span&gt;';

如何在子主题上做到这一点而不弄乱父级的 php 文件?

提前致谢

编辑

编辑 2

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    编辑 - 不同的方法

    您可以将文件 /inc/helpers/helpers-icons.php 复制到您的子主题中(保持文件夹结构 - 例如 /child-theme/inc/helpers/helpers-icons.php)。这样它将被调用而不是原始文件,您可以在那里更改函数。

    (原答案)从 Hooks 中删除函数:

    您需要使用remove_action()remove_filter() 来取消挂钩父函数并挂钩您的子主题函数。

    您使用哪个取决于该函数是附加到父主题中的动作挂钩还是过滤器挂钩。

    要删除函数,请使用:

    remove_action( 'init', 'parent_function' );
    

    但是,这不会单独工作,您需要将此函数附加到一个钩子上,该钩子将在父主题函数附加到的钩子之后触发。这是因为您无法在动作被触发之前将其移除。

    function child_remove_parent_function() {
        remove_action( 'init', 'parent_function', [priority level] );
    }
    add_action( 'wp_loaded', 'child_remove_parent_function' );
    

    注意:如果 parent_function() 是使用优先级加载的,您也必须通过声明相同的级别来卸载。这就是 [priority level] 在方括号中的原因。

    正如你想象的那样,wp-loaded 是在 init 之后出现的一个钩子,所以remove_action() 确实可以移除加载到 init 的 parent_function()。

    现在您可以随意编写任何您喜欢的新功能了。

    function child_function() {
        // your function
    }
    add_action( 'init', 'child_function' );
    

    来源及延伸阅读:https://obsessive-coffee-disorder.com/how-to-override-parent-theme-functions-in-wordpress/

    【讨论】:

    • 这是哪个错误?您没有在原始帖子中提及错误
    • 我用截图编辑了原帖
    • 尝试添加add_action( 'init', 'get_flatsome_icon' );
    • 我已经用替代解决方案编辑了我的答案,希望对您有所帮助
    猜你喜欢
    • 2017-03-04
    • 2016-08-20
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多