如何使子主题替换在不同php文件中加载的函数

时间:2011-10-16 作者:troy

我正在为“新闻”模板制作一个儿童主题。

我的问题是,父主题中有一些函数是在不同的php文件中定义的。这些文件在函数中调用。php with require\\u once。

我想我了解如何卸载函数和定义自己的函数,但如何将require\\u once调用指向子主题路径中的新文件?

干杯

特洛伊

2 个回复
SO网友:mrwweb

功能。子主题中的php文件在父主题函数之前运行。php。有一个few more details in the codex.

如果父主题遵循开发标准,则它们的每个自定义功能都应如下所示:

if( !function_exists( \'a_parent_theme_function\' ) ) {
    function a_parent_theme_function() {
        \\\\ do stuff
    }
}
那你就自己写吧a_parent_theme_function() 它优先,因为它是先定义的。然而,我要说的是,大多数主题都是在构建时很少考虑父主题,因此您不能覆盖父函数,这是一个很大的麻烦。

如果您使用的框架有自己的挂钩,那么您可能可以使用删除操作like this person did 撤消您不想要的功能,并在其他地方挂接以添加您想要的功能,但这感觉是错误的。也许您甚至可以以较低的优先级钩住同一个钩子,撤消函数的结果并重做您想要的。不过,这肯定离理想还很远。

这个问题类似于this previous question on stackoverflow 这不是好兆头。如果没有上述内容,PHP无法提供一种重载或重写现有函数的简单方法function_exists() 检查

SO网友:chifliiiii

只需将require\\u看作是一种组织函数的方法。最后,所有内容都位于函数中。php。换言之,您只需替换函数即可。php和您想要的函数。如果要从父主题加载文件,只需执行以下操作

require_once( get_bloginfo(\'template_directory\').\'includes_folder/something.php\');
希望有帮助

结束

相关推荐