如何从Wordpress父主题中声明的php自定义类重写单个函数?

如何从Wordpress父主题中声明的php自定义类重写单个函数?,php,wordpress,class,global-variables,wordpress-theming,Php,Wordpress,Class,Global Variables,Wordpress Theming,我正在从Wordpress主题创建一个子主题。父主题严重依赖自定义类,该类随后在functions.php文件中实例化,如下所示: <?php require_once (TEMPLATEPATH . '/advanced/specialclass.php'); $specialclass = new SpecialClass(); if(!function_exists('lets_go')) { function lets_go(){ global $spec

我正在从Wordpress主题创建一个子主题。父主题严重依赖自定义类,该类随后在functions.php文件中实例化,如下所示:

<?php
require_once (TEMPLATEPATH . '/advanced/specialclass.php');

$specialclass = new SpecialClass();
if(!function_exists('lets_go')) {
    function lets_go(){
        global $specialclass;
        $specialclass->start();
    }
}

lets_go();
?>

我需要在我的子主题中重写该类中的单个函数,我试图通过为子主题创建functions.php文件来实现这一点。我尝试了以下几种变体:

<?php
require_once (TEMPLATEPATH . '/advanced/specialclass.php');
require_once (STYLESHEETPATH . '/advanced/specialclassextended.php');

global $specialclass;
$specialclass = new SpecialClassExtended();

function lets_go(){
    global $specialclass;
    $specialclass->start();
}

?>

也许我的问题与没有充分理解PHP全局函数有关,但不管是什么,我都被卡住了。父主题文件中有许多对$specialclass的引用,因此通过在子主题中创建新模板文件来替换它们是不切实际的。我真的需要用扩展类的一个实例来替换这个全局类。这可能吗?我做错了什么?在我迄今为止的所有搜索中,这是我找到的最密切相关的信息,但不幸的是,它没有回答我的具体问题:


我不一定推荐这个。。。但是,如果您对服务器具有管理访问权限,并且可以安装PECL扩展,则可以使用

否则,您唯一可行的选择就是修改该主题。您可以做的一件事就是简单地将SpecialClass重命名为SpecialClassBase之类的名称,并将派生类重命名为SpecialClass的原始名称


如果在文件末尾包含自己的定义,则不需要更改任何其他内容。它应该只是“工作”。

抱歉,如果该类正由其他依赖项直接调用,那么它将不在您的控制范围之内,因为您无法重新声明它。该死。无论如何,谢谢你的确认。我想最简单的解决方案是对父类进行微小的修改,包括扩展类文件,并在functions.php中创建该类的实例。听起来合理吗?