重新声明子主题中的函数

时间:2014-05-24 作者:Gergely

我想重新声明从父主题继承的函数。

当我在函数中执行时。php,我得到一个致命错误,无法重新声明。

我做了一个变通方法:创建一个修改过的函数名并复制所有模板文件、索引。php等,并重写函数调用。现在调用新函数。

这可以工作,但会忽略父主题将具有的任何更新。

有没有更好的解决方案?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

仅当父主题的函数包装在

 if( !function_exists( \'function_name\' )):
状况。然后,您可以简单地将完整的函数复制到子主题,并进行所需的任何修改。

如果父主题的功能没有包装在if 条件语句,如果函数中没有提供过滤器或挂钩,最好将函数复制到子主题,重命名该函数,进行修改,然后相应地更新模板文件以反映新函数。

SO网友:user3635808

您可以先使用

remove_filter( \'hook\', \'function_name\' );
然后使用新名称和相同的钩子再次添加函数。

例如

    function remove_content_filter() {

       remove_filter( \'the_content\', \'function_name\' );

    }

    add_action( \'after_setup_theme\', \'remove_content_filter\' );

    function new_function_name( $output ) {
        //some code here
        return $output;
    }

    add_filter( \'the_content\', \'new_function_name\' );

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c