【メモ】spl_autoload_registerでハマる
某仕事で使っている内製のフレームワーク内からWordPressの関数を呼び出す際にはまったのでメモ。
基本はrequire_once(‘絶対パス’.wp-load.php)で終わり。
なんかwp-load.phpは読み込めてるのにほかのプラグインが読み込めない……。
結果FW内部でspl_autoload_registerしている個所に問題あり。
__autoloadは1個定義したらそれだけだが、
spl_autoload_registerは複数をキューに登録できる関数(こちらを使うときは__autoloadは無効)
spl_autoload_register(‘__autoload’)してみたけどこっちじゃなかった。
spl_autoload_registerに定義した無名関数内でthrowしてたのが原因だった。
try-catchしてないないんだから当然止まるわ。
もともとFW内部のクラス群しか使わないために呼び出せなかったら止めるという仕様で書いてあったものを無理やり持ってきたのでしょうがないと言えばしょうがないんだけど。
WordPressのせいじゃないのかとか思っちゃったけどこちらのスクリプトのせいだったというどうでもいい話。
ちなみにspl_autoload_registerは登録順に呼び出される。
途中クラスが返ってきている場合にはそこで止まる。