我正在使用一个WordPress插件,它有一个带有公共方法的php对象,可以为事件构建HTML内容,但是我想更改其中一个方法而不直接更改插件,所以它仍然可以用更新的版本更新没有问题。有没有办法从function.php文件重新分配或覆盖对象方法,它们的代码中没有过滤器或function_exists。我知道我可以在JavaScript中执行此客户端或使用jQuery.extend。我认为这在服务器端是不可能的,但我想我会检查。
干杯
答案 0 :(得分:2)
如果要重新声明的方法未声明为FINAL,并且该类的某些方法/属性不是PRIVATE(但是,例如PROTECTED,或者更好,所有PUBLIC) - 使用对象继承。
class YourNewClass extends stubbornClass
{
public function stubbornMethod ($params)
{
echo "do whatever you want, but retain $params and return value matching original class";
echo "you can also run the parent method version as:";
parent::stubbornMethod ($params);
}
}
答案 1 :(得分:0)
您唯一的选择是创建自定义插件并重用旧代码。
这是因为即使您创建了一个覆盖原始类的自定义PHP类,也无法告诉插件使用您的新类而不更改创建对象的旧插件行,将旧类名更改为新类名称。