WordPressのフックの仕組みを勉強中

「動画を追加」ボタンの動作が思っているものと違ったので、勉強がてら処理コードを読んでカスタマイズしてみようと思います。(2月23日)
作業中は、覚え書きなどをtwitterでつぶやいてみました。

続く以下に、作業の流れとサンプルコード

——
「動画を追加」ボタンの処理コードを読んでみる。{wordpress}/wp-admin/includes/media.phpの632行目あたり、function media_upload_video()からのreturn値がエディタに挿入されているっぽい

次にショートコード「embet」の動作を追ってみる

VISTAでは、[Shift]キーを押しながら右クリックすると拡張メニューになる。ファイルやフォルダーのパスをコピーしたいときに便利

ショートコードは、wpautop/en および wptexturize/enによる投稿の整形適用後にパースされる

embedショートコードについては、公式に説明があったので省略http://wpdocs.sourceforge.jp/Embeds

別の仕事を済ませて復帰。 「動画を追加」ボタンのつづき

『メディアを追加』などにはフックできるのだけれど、『動画を追加』にフックするキーワードがみつからない。うむむ

昨日の続きでwordpress解析。現在、どのフックにどんな関数が登録されているのか?を確認してみる。それらの情報はグローバル変数$wp_filterと$wp_actionsに入っているっぽい

–まとめのつづき(2月25)–

昨日の続きでwordpress解析。現在、どのフックにどんな関数が登録されているのか?を確認してみる。それらの情報はグローバル変数$wp_filterと$wp_actionsに入っているっぽい

とりあえず、開発しやすいようにfirefox3.6 & firebug1.5に『FirePHP』をインストールhttp://www.firephp.org/

FirePHPでPHPプログラミングを便利にする方法 | マイコミジャーナルhttp://journal.mycom.co.jp/news/2010/02/10/045/index.html

別の仕事から復帰。。。プログラムはどこまで読んでたっけ?

むむ 私は大きな勘違いをしていたのか>< wordpressってフックのキー自体を自分で追加できるのか!すごいな

{wordpress}\wp-includes\plugin.phpにあるadd_filterのソースを読むと、引数を受け取って$wp_filter[$tag][$priority][$idx]とグローバル変数に突っ込むだけ

単純だからこそ、逆にプラグイン内部で独自にフックしたりする自由な拡張がしやすいのでしょうね

処理の流れがわかればカスタマイズは簡単。「動画を追加」ボタンについては{wordpress}\wp-admin\includes\media.phpの658行目あたりにWP開発者の方が予めapply_filtersを入れてくれているので、そのフックをadd_filterすればOK

–以上–

という感じで、WordPressのアクションフックの仕組みをだいたい理解できました。
「動画を追加」ボタンのカスタマイズとしては、プラグインもしくはテーマ内のfunction.phpで、関数を作りadd_filterすればOK

例えば、
function myVideoButton($html, $href, $title){
  return $t .'[embed]'. esc_url($href) .'[/embed]';
}
add_filter('video_send_to_editor_url', 'myVideoButton',10,3);

これだけで、「動画を追加」ボタンで入力したURLは、リンクではなく[embed]URL[/embed]の形でエディタに挿入されます。

これからは、管理画面も自信を持ってカスタマイズしていけそうです。
ホームページ制作・WEBデザインは広友社におまかせ!

そして、
今回動作の流れを掴むために『FirePHP』を使用したおかげで、かなりの時間を短縮できたように思います。
WordPressは、functionからfunctionの呼び出しや互換性確保の為にスルーしてるだけのfunnctionや、includeされるファイルが多いので、ソースファイルを検索して読んではまた検索の繰り返しでは大変です。
FirePHPのFB::trace()という関数を使うと、そのコードがある行数やどの関数を経由してコールされたかなどを表示してくれるので、一発で実際に処理をしているfunctionにたどり着けることも多かったです。

開発・製作を進める上で、道具は重要だなぁと感じる経験でした。

カテゴリー: PHP, Twitter, wordpress   パーマリンク

コメントは受け付けていません。