如何以内联方式显示页面上使用的所有函数(挂钩、过滤器或自定义php

时间:2019-05-06 作者:user3795286

我想显示一个页面和所有钩子、类或php自定义函数,这些函数与页面内容内联,没有var\\u转储。

这样做的目的是审核一个有着18k页面的7年历史的网站,以及多年来许多开发人员编码和编写功能(没有文档)的情况,以辨别哪些功能正在哪些页面上使用,如果有功能根本没有在该网站上使用,则不推荐它们。

非常感谢。

1 个回复
SO网友:Stephan Samuel

你要求的不止一件事:

  • Enumerate hooks: 这可以在$wp_filter 全局变量。如果您只想查找挂钩的名称,请使用array_keys(). 有关一些代码示例,请参见here 或者还有很多其他的例子
  • Enumerate classes: 使用PHP函数get_declared_classes().
  • Enumerate functions: 类似地,使用PHP函数get_defined_functions(). 这将为您提供一个数组的关联数组,听起来您可能只需要user
  • Filter these lists: 这是骗子的部分。可能您需要建立一个要过滤掉的内容的参考列表,就像所有WP自定义函数一样(一个长列表)。以上所有引用的源代码都提供了数组array_filter() 可能是你最好的朋友
  • Display your content: 可能最终会得到一个或多个包含要显示的内容的数组。构建您的foreach 循环将内容转储到屏幕上您想要的位置和方式。我不太清楚“内联页面内容”是什么意思,但几次快速运行应该可以帮助您整理事情,并使其看起来像您喜欢的那样。请记住,如果要将字符串数组转储到分隔列表中的屏幕,implode(\', \', $array_of_strings) 提供良好的结果
如果要查找特定页面上调用的内容,而不是定义的内容,那么如果不中断PHP解析器(或重新解析调用的PHP文件),类和函数很难实现。在这种情况下,挂钩相对容易,只需使用all 滤器这将为您提供在呈现页面时从端到端的调用内容。

如果您正在查找PHP文件中定义的内容,那么这只是解析或挂接PHP解析器的练习。这里更大的问题是,WP中的特定页面加载与加载的PHP文件的数量有着非常松散的关联。访问的URL和加载的单个PHP文件之间没有一对一的关联。例如,每个支持类,如WP_Postwpdb, 在单个PHP文件中定义,其中没有一个文件可能直接负责任何页面加载的任何输出,但所有这些都是几乎每个页面加载所必需的。

如果没有更多关于你想要完成什么(特别是为什么)的信息,很难说得更多。所以你想完成什么?这些背景信息是否足以帮助您完成任务?

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。