我有一个“免费增值”插件,我正在做一些重大更新。最初,购买专业版的用户将卸载免费插件,然后安装专业版。凌乱,但我是初学者。所以现在我希望用户能够安装免费插件,然后能够安装专业版升级,以便按计划扩展功能。
我当前的插件使用了一个类:class MyFreePlugin {__construct()...}我的升级插件正在扩展类:class MyProPlugin扩展MyFreePlugin {...}
这是我的问题。我想在插件的设置页面和tnyMCE弹出窗口中添加功能,并完全覆盖免费版本的一些操作,过滤器和功能。
示例:免费插件有
add_action('admin_head',array(&$this,'my_free_admin_head_fn'));
它在管理菜单中添加/排队一些脚本。我想删除/覆盖原始操作并将pro插件中的脚本排入队列:
add_action('admin_head',array(&$this,'pro_other_admin_head_fn').
另外,作为php类的新手,特别是在WordPress的上下文中,我的扩展类如何获取父类的变量值?
这一切是否可能,如果是这样,怎么样?如果你有例子,那就更好了。我已经通过php手册进行了挖掘,但在尝试覆盖过滤器和操作时它并没有那么有用。谢谢你的帮助!
... 为了对抗你的回答Janw, 不幸的是,这似乎不起作用。这是一个例子:在免费插件的__construct()中,我有这个:
add_action('admin_menu', array(&$this,'add_plugin_menu'));
调用将菜单添加到管理侧栏的功能。在我的插件的“专业版”中,我正在测试是否可以在使用以下任何内容触发之前删除该操作:
remove_action('admin_menu', array(&$this,'add_plugin_menu')); (nothing)
remove_action('admin_menu', array(parent,'add_plugin_menu')); (nothing)
remove_action('admin_menu', array(&parent,'add_plugin_menu')); (throws an error)
remove_action('admin_menu', 'parent::add_plugin_menu'); (nothing)
等。基本上,免费插件是在专业版之前加载的,所以在我删除/覆盖它们之前,动作似乎正在发生。另外,我无法得到父母的变量,除非我将它们全部公开,我宁愿不这样做。