我是一个新手插件开发人员,我有一个想法,我认为这将是一个简单的构建首个插件,但我似乎已经达到了一个砖墙,不知道是否有人可以建议一些替代方法,甚至告诉我这是否可能。
该插件的目的是:为插件创建的管理页面中的任何菜单项(即不是默认WP安装的一部分)创建显示插件名称的工具提示。例如,您可能会看到菜单项:用户/角色,并思考“角色项来自哪里?”然后将鼠标悬停在该项目上,会弹出一个工具提示,上面写着“由成员插件添加”,因此您知道该项目是由成员插件添加的。
所以首先我探索了Walker
类,但这似乎不适用于管理中的菜单。接下来,我寻找管理菜单的过滤器,试图将HTML标题属性添加到插件创建的菜单项中,但我似乎找不到任何合适的过滤器。
我看了看$menu
和$submenu
WP中的全局变量,但由于某种原因,页面中存在的一些菜单项不在这些集合中,尤其是那些由上述成员插件创建的菜单项。
所以最后我想我会用get_plugins()
函数,然后我从中提取每个插件文件夹的名称,并猜测这将是插件的名称。然后,我将这个插件名称列表及其diplay名称传递到javascript参数中,供jquery函数使用,以查看它是否可以在管理菜单中的任何html链接或类名中找到这些插件名称。然后,它将html标题属性添加到任何匹配的链接中,并用jquery显示它tooltip()
功能性。
这在一定程度上起到了作用,但由于许多插件名称没有出现在它们创建的链接中,甚至没有出现在它们创建的菜单的标题中,因此它是不完整的,因此不是很有用。
所以我想知道是否有什么我忽略了的东西可以更有力地实现此功能?
感谢您的帮助/建议。
SO网友:cjbj
插件通过调用add_management_page()
. 在这里,他们插入最后出现在菜单中的段塞。通常这个slug与插件slug相同,但这不是必需的。因此,当您尝试此操作时,会得到部分结果。您必须清理所有插件文件,才能找到@马克·卡普伦建议的slug。
或者你可以覆盖add_management_page()
. 确保尽早加载插件(使用add_action(\'muplugins_loaded\', \'your_plugin_name\',0);
), 所以所有其他插件都将使用您的版本add_management_page()
.
使用PHPdebug_backtrace
您可以找到调用您的版本的函数add_management_page()
. 接下来,您可以找到调用函数的路径ReflectionFunction
. 然后将路径与使用的插件列表进行匹配get_plugins()
. 这将为您提供工具提示所需的所有信息。
所以,这是一个地狱般的工作,我当然没有尝试过。