走進wordpressdo_action函式

老朱教授發表於2017-10-01

再看do_action函式。位於plugin.php352行。我把原始碼放在西街口這裡,略去了其它輔助處理的語句。

如下:

function do_action($tag, $arg = ``) {     ++$wp_actions[$tag]; //計數器加1,did_action中用到       do {         foreach ( (array) current($wp_filter[$tag]) as $the_ )             if ( !is_null($the_[`function`]) )                 call_user_func_array($the_[`function`], array_slice($args, 0, (int) $the_[`accepted_args`]));       } while ( next($wp_filter[$tag]) !== false );       array_pop($wp_current_filter); }

可以看出,主要是個do-while迴圈,其中涉及了兩個標準函式:

current 是php標準函式,返回陣列當前元素。

call_user_func_array是php標準函式,執行使用者自定義的函式,第一個引數是函式名,第二個是自定義函式的引數陣列。

這樣do_action函式一目瞭然,首先計數器加1,然後執行迴圈。

迴圈體中,執行名字儲存於全域性陣列$wp_filter的自定義函式。

關於$wp_filter,$wp_current_filter是什麼,馬上講到。




本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/p/4741050.html如需轉載請自行聯絡原作者


相關文章