質問: ジャストタイムアプローチに従ってファックを見つめる方法は? 自分の機能をアクションに結び付けるのにjust-in-timeのアプローチに従うにはどうすればいいですか?私たちは、誰もがinitのような非常に早い段階に関数を追加するだけなので、最適化の範囲は残ります。 wordcampのプレゼンテーションで、jitがある程度のパフォーマンスを発揮することを確認したところ、まったく同意していましたが、最後にフックできるのはどのようにして見つけるのですか。wpコードの実行フローを理解するのに役立つものはありますか?
回答: 私自身も違うものを使っていますが、このスニペットで私のフック "なりすまし"を1日進めることができました。function list_hooks( $filter = false ){ global $wp_filter; $hooks = $wp_filter; ksort( $hooks ); foreach( $hooks as $tag => $hook ) if ( false === $filter || false !== strpos( $tag, $filter ) ) dump_hook($tag, $hook); } function list_live_hooks( $hook = false ) { if ( false === $hook ) $hook = 'all'; add_action( $hook, 'list_hook_details', -1 ); } function list_hook_details( $input = null ) { global $wp_filter; $tag = current_filter(); if( isset( $wp_filter[$tag] ) ) dump_hook( $tag, $wp_filter[$tag] ); return $input; } function dump_hook( $tag, $hook ) { ksort($hook); echo "<pre>&gt;&gt;&gt;&gt;&gt;\t<strong>$tag</strong><br />"; foreach( $hook as $priority => $functions ) { echo $priority; foreach( $functions as $function ) if( $function['function'] != 'list_hook_details' ) { echo "\t"; if( is_string( $function['function'] ) ) echo $function['function']; elseif( is_string( $function['function'][0] ) ) echo $function['function'][0] . ' -> ' . $function['function'][1]; elseif( is_object( $function['function'][0] ) ) echo "(object) " . get_class( $function['function'][0] ) . ' -> ' . $function['function'][1]; else print_r($function); echo ' (' . $function['accepted_args'] . ') <br />'; } } echo '</pre>'; } 誰かがこれを書いた場合、plsは自分自身を作者として名前を付けます(orig。sourceへのリンク付き)。リンクを安全にするのを忘れていました編集:このページ @ codex もご覧ください。そこにあなたは順序が引き起こされる順序を見ることができます。 あなたに出発点を与えるべきです:/root/index.php > wp-blog-header.php > wp-load.php > wp-config.php > wp-settings.php > \wp-includes\load.php > \wp-includes\default-constants.php > ...最も良いのはどこかから何らかのデバッグクラスをつかみ、ただインクルードローカルをチェックすることでしょう。