WordPressのエラー、これってうちのサイトだけの問題?
My Web Serverのログを確認していて、以下のエラーが大量に発生していることに気付きました。
PHP message: PHP Warning: Illegal offset type in isset or empty in /DocumentRoot/wp-includes/class-wp-hook.php on line 75
PHP message: PHP Warning: Illegal offset type in /DocumentRoot/wp-includes/class-wp-hook.php on line 77
Illegal offset type エラーの原因は、add_filter関数の定義にて第3引数にデフォルト値が設定されていないため、
75: $priority_existed = isset( $this->callbacks[ $priority ] );
/DocumentRoot/wp-includes/class-wp-hook.php
76:
77: $this->callbacks[ $priority ][ $idx ] = array(
$this->callbacks配列の要素である$priorityにNullが代入されているためでした。$this->callbacks[Null]や$this->callbacks[Null][$idx]を参照しようとすれば"Illegal offset type"と怒られるのも当然です。
73:- public function add_filter( $tag, $function_to_add, $priority, $accepted_args) {
/DocumentRoot/wp-includes/class-wp-hook.php
73:+ public function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1) {
第3引数、 第4引数の指定が無かった場合、デフォルトでそれぞれ"10"と"1"が設定されるようにしたところ、エラーが解消しました。 add_filter関数を使わなければ問題は起きないのですが、使っているテーマでは結構な数を使っていました。 add_filter関数が正常に動作しない場合にチェックして見て下さい。
WordPressもまだまだ甘いな(ぼそっ)。