1

Wordpress では、「フック」と「フィルター」を使用してコアを拡張できます。たとえば、実行プロセスのかなり早い段階で何かを実行するには、次のように記述します。

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

フィルタも同様に機能します。フックを定義する関数はdo_actionであるため、コア開発者が書いた init フックを作成する

do_action( 'init' );

do_action は、このフックが示していないいくつかのオプションの引数を受け入れます。フィルタの関数名は add_filter と apply_filter です。

あるプラグインのソース コードを閲覧していて、ソース ファイルの 1 つからのフックを使用していて、どれがどれかわからないとします。それを見つける最も簡単な方法は何ですか?

Vim では ctags をよく使用しますが、関数名を指定する代わりに、フィルターまたはフック名を指定することで、同様のことができることを望んでいました。何か案は?

(ctags のように Vim 内から実行できない場合、2 番目に良い方法は、スクリプトを見つけるコマンドを実行することです。これが最善の解決策である場合は、これも受け入れられる可能性があります)

4

3 に答える 3

2

あるプラグインのソース コードを閲覧していて、ソース ファイルの 1 つからのフックを使用していて、どれがどれかわからないとします。それを見つける最も簡単な方法は何ですか?

私はgrepを使います。それなしでは動作しませんでした。grep私が欲しいものは何でも手に入れます。grep -Rni "do_action( 'init'" *「init」フックを見つける必要があります。特定のファイルやディレクトリを無視するように指示するだけでなく、必要に応じて検索文字列で正規表現を使用できます。私は他のオプションを試しましたが、他のもので販売されたことはありません. grep速くてきれいです。

これは「Vim」の回答ではありませんが、「または同様の」と言っていました:)

http://adambrown.info/p/wp_hooks/version/3.4にも非常に優れたフック データベースがあります。

于 2012-10-15T17:48:58.437 に答える
2

私は最近これを頻繁に行わなければならなかったので、プロセスを容易にするために小さな Vim プラグインを書きました。

フックまたはフィルターの名前にキャレットを置き、+ を押しLeaderfフックされた関数を見つけるか、Leader+を押しFてフック/フィルター定義を見つけます。

インストールするには:

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

~/.vimrc にキーバインディングを追加します:

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

サイト ノート:これを書いて、そうです、人々はadd_filter自分の関数を で定義されたフックにフックするようなことをしdo_actionているので、出現箇所を手動で検索するとエラーが発生しやすくなる可能性があることがわかりました。

于 2013-08-08T13:29:28.260 に答える
1

基本的なものから複雑なものまで:

GREP

すでに説明しました。

VIM または VIMGREP からの GREP

すでに Vim を使用している場合は、:vimgrepコマンドまたはその姉妹を使用でき:grepます。

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

再帰検索を実行できるワイルドカードについて:help starstarは、を参照してください。内部メソッドを使用しますが、まあ…を使用します。後者の方が速いかもしれません。**:vimgrep:grepgrep

CTAG

インストール済みであればctags、インデックス作成はシェルまたは Vim で行うことができます。

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

クエリは簡単です:tag do_action。詳細:help tagsな説明をお読みください。

Cスコープ

インストール済みcscopeであれば、シェルから直接使用できます。

$ cscope -R *.php

インデックスが作成されると、 のインターフェイスで検索しcscope、選択したファイルをエディターで開くことができます。

Vim が cscope をサポートしていると仮定すると、次のことを行う必要があります。

  1. インデックスを作成し、:!cscope -bR *.php

  2. インデックスを見つけ、:cs add cscope.out

  3. *d*定義を見つけて、:cs f d do_action

CodesearchGNU Globalのような特殊なツールは他にもありますが、プレーンgrepまたはせいぜいctags.

于 2012-10-15T20:09:35.147 に答える