※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

Ktai Style Ver. 1.80とWP Super Cacheの組合せで500エラー?

 Ktai StyleをVer. 1.80にバージョンアップしようと思い、WordPressのpluginsフォルダに放り込んだとたん、WordPressの表示が真っ白に。。ひー。。。
 あーだこーだトライ&エラーを繰り返した結果、なんとなく解決法にたどり着いたので記録しておきます。

 KtaiStyleのディレクトリの名前を、前のVer. で使っていたのとは異なる名前にしたところエラーが出なくなったので、(なんとなく気持ち悪い感じはあるものの)しばらくそれで使っていました。ですが、ある日の友人からのメールにこんな事が書かれていました。

「icoroはアラビア圏を対象に今度から配信するんですね。」

 いったいなんのこっちゃ?と思ったのですが、添付されていた画像で激しく理解。

icoroアラビア語版?

 うぉ…文字化けしてる…
 てか、これ、携帯での表示もWP Super Cacheでキャッシュされちゃってる?Twitterでも「表示が変」というつぶやきが(@akatan3 バグレポート、Thanksです!)。

 非常事態宣言!

 というわけで、ググってみたら同じような症状が発生している人がいました。

分岐する記述を記載すると、500エラーをはき出したため、wp-super-cache を wp-cache に変更するも現象改善せず。

mode-n – 検証のお願い

 どうもKtai StyleとWP Super Cacheを一緒に使う場合に問題があるようです。んー。

解決方法

 あーだこーだといろいろ試してみた結果、とりあえず、以下のようにすることで問題が解決しました。別の問題が発生していそうなので、確実に解決した保証はないです。。ご了承ください。。

 問題の原因はpatch-wpcache.phpの39行目の部分のようです。

	if (ks_option('ks_theme_touch')) {
		$ks_mobile_agets += array('iPhone;', 'iPod;', 'Android');
	}

 この部分を以下のように書き換えることで解決しました。というか、エラーが出なくなりました。

if(function_exists('ks_option')) {
	if (ks_option('ks_theme_touch')) {
		array_push($ks_mobile_agents, 'iPhone;', 'iPod;', 'Android');
	}
}

考察

 直した部分は以下の3点です。

  1. KtaiStyleの関数「ks_option」が存在しない場合があるようで、関数が存在する場合にだけ処理を行うようにした。
  2. 「$array += array(‘element’)」という方法では配列の追加が出来ない?ようだったので、array_push関数を利用して配列を追加するようにした。
  3. 「$ks_mobile_agents」と書くべきところが「$ks_mobile_agets」となっていた。(「n」が抜けています。しばらく気が付きませんでした。。)

 Ktai Styleのディレクトリ名を変更すると500エラーが出なくなったのは、/wp-content/wp-cache-cofig.phpに追記した以下のコードが無視されるためでした。追記した事なんてすっかり忘れていました。。

if (file_exists(ABSPATH. 'wp-content/plugins/ktai_style/patch-wpcache.php')) {
	include ABSPATH. 'wp-content/plugins/ktai_style/patch-wpcache.php';
}

 で、このコードが読み飛ばされていたために、携帯での表示もキャッシュされるようになっていたようです。

 不自然な事にはやっぱりちゃんと原因がありますね。。

関連リンク

1冊ですべて身につくWordPress入門講座

  • メーカー:SBクリエイティブ
  • カテゴリ:Kindle版
  • 発売日:2022/03/23

関連する記事