預設的情況下,WordPress 的外掛是按照外掛的字母順序載入的,比如 a/a.php 是比 b/b.php 先載入的,那麼我們需要更改外掛的載入順序如何操作呢,由於啟用的外掛是存在 active_plugins 的 option 裡面,我們只需要啟用或者停用外掛的時候,系統更新 active_plugins 這個 option 值之前 hook 它就可以。

比如下面的程式碼,我們可以把微信機器人外掛設定為最後載入:

  • dd_filter('pre_update_option_active_plugins', 'weixin_robot_set_plugin_load_late');
  • function weixin_robot_set_plugin_load_late($active_plugins){
  • $weixin_plugin    = plugin_basename(WEIXIN_ROBOT_PLUGIN_FILE);
  • if(false !== ($plugin_key    = array_search($weixin_plugin, $active_plugins))){
  • unset($active_plugins[$plugin_key]);
  • $active_plugins[] = $weixin_plugin;
  • }
  • return $active_plugins;
  • }

注:

一般來說如果外掛裡面都全是函式,而沒有立刻執行的程式碼,外掛的載入順序是沒有關係,如果需要在外掛裡面有立刻執行的程式碼,最好放到 plugins_loaded action 裡面執行,這樣 action 的意思是所有的外掛載入完成之後執行的動作。