ひとまずプラグインを再インストールして様子を見てみます。
ちょっと原因が謎です。ks_header()
などの Ktai Style 専用テンプレートタグは、携帯閲覧時にのみ有効になるようになっています。携帯でないデバイスが携帯用テーマを読もうとすると、こういう現象が発生します。
WP-Cache とか WP Super Cache とかを使っていると、それが原因だろうと推測されますが、そうでないとすると、WP-Cron 動作があやしくなってきますね。つまり、WordPress が cron 動作を予約したときに携帯ページを見るように指定ていてい、それが後で動作しているのかもしれません。
とりあえずの回避策として、ktai_style.php の 30-32 行目付近を以下のように変更してみてください。こうすると、Cron 動作のときは Ktai Style が無効になります。
if ( defined('WP_INSTALLING') && WP_INSTALLING || defined('DOING_CRON') && DOING_CRON ) {
return;
}
当方もbosukete様と同様の症状に陥っております。
WordPress2.8 + Ktai Style1.73 から
WordPress2.9.1 + Ktai Style1.81 + WP Super Cache0.9.8
に移行しての症状なので、WP Super Cacheやその残骸が怪しい気もします。
私のほうでもbosukete様と同様の現象が発生しています。
WordPress2.9.0 + Ktai Style 1.80
WordPress2.9.0 + Ktai Style 1.81
WordPress2.9.1 + Ktai Style 1.81
上記の三パターンで発生したことを確認しました。
テーマは未編集、WP Super Cacheも未導入での発生です。
そのときに発生したエラーメッセージが以下です。
[06-Jan-2010 20:11:54] PHP Fatal error: Call to undefined function ks_header() in /home/**/**/**/**/wp-content/plugins/ktai_style/themes/default/single.php on line 1
今回は single.php での発生でしたが、 home.php で発生する場合もありました。
サーバはさくらのレンタルサーバ、スタンダード版です。
私も同じ症状です。
とりあえずdefaultのテーマを削除しました。
今のところ症状は再現していませんが・・・。
WordPress 2.9 から、テーマのアップデートを確認するとき、現在使用可能なテーマをキャッシュしているようです。まれに「現在のテーマをキャッシュする」動作が携帯閲覧中に発生してしまうようです。
上に書いたように、ktai_style.php に CRON 中は動作しない改造をすると改善される可能性があります。症状が起きている場合は、これを試してもらえると助かります。
根本的な修正方法は、Ktai Style が TEMPLATEPATH, STYLESEETPATH 定数を携帯向けに変更するのをやめることです。これは Ktai Style 1.00 からの仕様を変更することになり、大幅な改造になりそうです (変更すると Ktai Style 2.0.0 を名乗る必要があるぐらい)。ただ「PC テーマの画像リソースを使いたい」という要望があって、それを実現するには、STYLESHEETPATH とかの定数をいじらない方がいい気がしています。もうちょっと検討させてください。
lilyfan様、早速の対応ありがとうございます、助かります。
修正はかなり大変そうですね。
とりあえず上記の書き換えをして様子を見てみます。
ありがとうございました!
昨日の夜からlilyfan様の回避策を設定して様子を見てみましたが、やはり同様のホワイトバック画面が発生しました。
WordPressのバージョンは2.9.1、Ktai Styleのバージョンは1.81でした。
先の書き込みをうかがう限り、検討が必要とのことですので、また方針が決まりまして、新しいバージョンになりましたら再度、試させて頂きます。
お忙しい中のご対応、ありがとうございました。
お試しありがとうございます。DOING_CRON を検出してもダメとすると、もうちょっと工夫が必要ですね。
直接的には wp-includes/themes.php で get_themes()
内部の set_site_transient()
を実行しているのが原因です。これが携帯画面モードで呼ばれると、不整合が発生します。set_site_transient()
自体を制御することは困難です (むりやり $_wp_using_ext_object_cache
を true にしてもいいけど、それは明らかに不具合が出そう)。
get_themes() はけっこういろんな箇所から呼ばれるんですが、少なくとも携帯出力時は呼んでない *はず* です。もうちょっと調査してみます。
わたしも、同じ症状がでました。
サーバーは、さくらのレンタルサーバ、スタンダード版です。
テーマを、cmpact→default→cmpact とガチャガチャと変えたら一応なおりましたが、様子をみています。
不安です・・・
lilyfanさん、よろしくお願いいたします。
wordpress2.9, Ktai Style 1.81へアップグレード後に、まれに同様の症状がでるように
なりました。
管理画面に直接アクセスしてテーマを変更すると復旧するのですが。
wordpress2.9.1, Ktai Style 2.0.0-beta1 にアップデートしてからは
、今のところこの問題は起きていません。
私は、iPhone用テーマ WPtouch iPhone Theme http://wordpress.org/extend/plugins/wptouch/ も使用しているのですが、こちらでも
worpress2.9以降、PC閲覧時にiPhone用テーマがまれに表示される問題が起きています。
WPtouch でも問題が発生する、というのは貴重な情報ですね。WPtouch のソースコードを読んでみて研究してみます。
Ktai Style 2.0.0 は近日中に beta2 を出して、今月末ごろには正式版に移行しようと考えています。
すみません、バージョンを書き忘れました。
wptouch の最新版は1.9.7.6なのですが、現在1.9.5を使用しています。
changelogを見ると、1.9.6でwp2.9に対応したようです。
本家のフォーラムにもこの問題が報告されているようです。
最新の 1.9.7.6 のコードを見てみても、stylesheet, template, get_theme_root, get_theme_root_uri などのフックは使っています。ですので、同じ問題が発生する可能性は残っていますね。これらのフックを使ったまま回避するのは、かなり困難なはずで、WPtouch 側のやり方も気になるところです。
debug_backtrace()
を使ってフックを呼び出している関数を調べれば、「この関数から呼ばれたときはフックしない」などの手法が可能なんですが、それでも副作用の心配はありますから。
バージョンアップお疲れ様です。
2.0xになったのですね!
早速使わせていただきます。ありがとうございます!