gpt4 book ai didi

php - 从另一个插件/扩展类覆盖插件的功能

转载 作者:行者123 更新时间:2023-12-05 08:00:31 24 4
gpt4 key购买 nike

我有一个“免费增值”插件,我正在做一些重大更新。本来,购买专业版的用户会卸载免费插件,然后安装专业版。凌乱,但我是一个初学者。所以现在我希望用户能够安装免费插件,然后能够安装将按计划扩展功能的专业版升级。

我当前的插件正在使用一个类:class MyFreePlugin { __construct() ... } 我的升级插件正在扩展该类:class MyProPlugin extends 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)

等基本上,免费插件是在专业版之前加载的,所以这些操作似乎是在我可以删除/覆盖它们之前发生的。另外,除非我将它们全部公开,否则我无法访问父变量,而我宁愿不这样做。

最佳答案

你可以使用remove_action()删除免费版本的功能。在专业版中,您只能包含 MyFreePlugin 文件,然后进行扩展。

关于php - 从另一个插件/扩展类覆盖插件的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com