使用Vim或类似工具查找Wordpress挂钩和过滤器



Wordpress允许您使用"钩子"one_answers"过滤器"来扩展其核心。例如,为了在执行过程的早期执行一些东西,我可以编写

add_action( 'init', function() { // Do something } );

过滤器的工作原理类似。定义钩子的函数是do_action,因此为了创建init钩子,核心开发人员编写了

do_action( 'init' );

doaction接受几个这个钩子没有演示的可选参数。过滤器的函数名为add_filter和apply_filter。

假设我正在浏览某个插件的源代码,它使用了一个源文件中的钩子,我不知道是哪个。找到它最简单的方法是什么?

在Vim中,我经常使用ctags,我希望可以做一些类似的事情,只是我可以给过滤器或钩子名称,而不是给函数名称。有什么想法吗?

(如果不能从Vim中完成,比如ctags,第二个最好的方法是运行一个命令来为我定位脚本。如果这是最好的解决方案,这也是可以接受的)

假设我正在浏览某个插件的源代码,它正在使用钩子来自其中一个源文件,我不知道是哪一个。什么是最简单的定位方法?

我使用grep。没有它就无法工作。grep可以让我得到我想要的任何东西。grep -Rni "do_action( 'init'" *应该找到"init"钩子。如果需要,您可以在搜索字符串中使用regex,并告诉它忽略特定的文件和/或目录。我试过其他选择,但就是从来没有在其他方面被说服过。grep快速清洁。

这不是"Vim"的答案,但你确实说了"或类似的":)

有一个非常好的钩子数据库http://adambrown.info/p/wp_hooks/version/3.4也

我最近不得不做很多事情,所以我写了一个小的Vim插件来简化这个过程。

只需将插入符号放在挂钩或过滤器的名称上,按Leader+f查找挂钩函数,或按Leader+

f安装:

cd ~/.vim/bundle && git clone https://github.com/borzhemsky/wp-hook-finder.git

将密钥绑定添加到~/.virc:

nnoremap <Leader>f :FindWPHook<CR>
nnoremap <Leader>F :FindWPHookDef<CR>

网站说明:写这篇文章让我明白,是的,人们会使用add_filter将他们的函数挂接到用do_action定义的钩子上,因此手动搜索事件可能很容易出错。

从基本到相当复杂:

GREP

已经解释过了。

VIM或VIMGREP的GREP

如果您已经在Vim中,您可以使用:vimgrep命令或其姊妹:grep:

:vim "do_action( 'init' )" **/*.php | copen

请参阅:help starstar以获取**通配符,以便您进行递归搜索。:vimgrep使用内部方法,而:grep使用,嗯…grep。后者可能更快。

CTAGS

假设您安装了ctags,则可以在shell或Vim:中进行索引

$ ctags -R . <-- in the shell
:!ctags -R . <-- in Vim

而查询只是CCD_ 15的问题。请阅读:help tags以获得更深入的解释。

CSCOPE

假设你安装了cscope,你可以直接从外壳使用它:

$ cscope -R *.php

创建索引后,您可以在cscope的界面中进行搜索,并在编辑器中打开选定的文件。

假设你的Vim支持cscope,你必须:

  1. 创建索引:!cscope -bR *.php

  2. 定位索引,:cs add cscope.out

  3. *找到定义,:cs f d do_action

还有其他专门的工具,如Codesearch或GNU Global,但我认为您不需要比普通的grep或最多ctags走得更远。

相关内容

  • 没有找到相关文章

最新更新