こんにちは。Sachaです。

私のブログでは、「Newpost Catch」というプラグインを使っているのですが、phpのバージョンアップ後、Warning: Use of undefined constant ‘css’ – assumed ”css”というようなエラー文がトップページに出るようになってしまいました。

CSSについては、まだまだ勉強中で、難しいことは分からないのですが、このエラーについて、調べつつ、私なりに解釈したことがあったため、健忘録として。

そもそもの始まりは?

一番最初は、下記のようなエラーから始まりました。

Warning: Illegal string offset ‘active’ in /home/~~~~/●●●/ドメイン名/wp/wp-content/plugins/newpost-catch/class.php on line 42

エラー文の末尾に、「wp-content/plugins/newpost-catch/class.php on line 42」 とあるため、 プラグインの「Newpost Catch」の「class.php」の42行目に問題があるということは分かりました。

ただ、何をおっしゃっているのか分からず調べたところ、こちらのサイト様にたどり着きました。

https://seikousyahenomichi.com/illegal-string-offset-active/

上記サイト様では、このNewspost Catchのclass.phpの問題部分を以下のように直すようにご教授してくださっています。

$options[$key] = $val[‘css’][‘active’];という記載を $options[$key] = $val[‘css’][‘active’];を$options[$key] = “”;
if(isset($val[‘css’][‘active’])){$options[$key] = $val[‘css’][‘active’];}に変換します。

成功者への道

phpのバージョンアップに伴い「illegal string offset ‘active’」のエラーが出た方は、上記サイト様の方法で、指示に従って直すとエラーが消えるのです・・・が、ここでちょっとした問題が。

ワードプレスもバージョンアップしたためか、私の場合、①プラグイン編集からのclass.phpの編集が出来ない、②なぜか新たな「Use of undefined constant~」というエラーが発生、という事態になってしまったのです。

ワードプレスのバージョンアップが原因かもしれないというのは、私の憶測でしかないため、上記サイト様の方法ですんなり直せる方もいらっしゃると思います。

実際、もともとの 「Illegal string offset ‘active’ in ~」のエラーについては、このサイト様のお陰で、根本的なエラーは解消されました。

プラグイン編集(現在はプラグインエディター)からの編集が出来なかった時の対処をまずは書いていこうと思います。

プラグインエディター(プラグイン編集)からは直せない場合。

プラグインエディターを開くと、プラグインの選択が出来るのですが、「class.php」の部分がクリックできない・・・・。

そのため、ワードプレスではなく、使っているサーバー内で直すことにしました。

私の場合はエックスサーバーを使用しているので、サーバーパネルのFTPアカウント設定から、フォルダを開いていき、ファイルを手直しすることが出来ました。

「Use of undefined constant~」というエラー

そして、新たに出てしまった、 「Use of undefined constant~」というエラー ですが、このエラーは「定数が無いよ!」ということを表しています。要は入力エラーが起きているということです。

私の場合は

$options[$key] = “”;
if(isset($val[‘css’][‘active’])){$options[$key] = $val[‘css’][‘active’];}

と直してみたところ

  • ①Use of undefined constant “” – assumed ‘ ”” ‘ ~~~line42
  • ②Use of undefined constant ‘css’ – assumed ”css” ~~~line43
  • ③Use of undefined constant ‘active’ – assumed ”active” ~~line43

と3か所の指摘が。

これは、constantの後ろの部分をassumedの後ろの形に直しなさいよ、という指摘になっています。

最初のダブルクォーテーションはクォーテーションで囲い、下二つのクォーテーションはダブルクォーテーションに変えなさいということですね。

そのため、上記サイト様のやり方に従ったあと、更にクォーテーションの付け加えで、

$options[$key] = “”;
if(isset($val[‘css’][‘active’])){$options[$key] = $val[‘css’][‘active’];}

$options[$key] = ‘“”’;
if(isset($val[‘‘css’’][‘‘active”])){$options[$key] = $val[“css”][“active”];}

とすることで、エラーが消えました。

エラーが出たのは初めてだったので、びっくり。

とにかく解消されて良かったです。

それでは今回も閲覧していただきありがとうございました。

続きを読む