Yuriko.Net 個別記事

mobile_same_url のフィルター関数置き場
Ktai Style 1.30 から、「PC 版ページの URL に携帯電話でアクセスするとモバイル版ページが出るブログサービスへのリンク」は中継ページを出さないようにしましたが、この「ブログサービスの一覧」は mobile_same_url フィルターを使えば編集できます。しかし、コードの不具合で、フィルター関数を my-hacks.php に置かなければなりませんでした。当初の予定では、携帯テーマの functions.php に置いても OK のはずですが、それでは動作しないという報告を受けてしまったのです。
いろいろ調査した結果、tags.php, shrinkage.php を早い段階で require
してしまっているのが原因でした。mobile_same_url フィルターの適用は、shrinkage.php が require
されたタイミングです。設計上は、template_redirect アクションによって、Ktai_Style::output()
メソッドが実行された時点で tags.php が require
されるつもりでした。
しかし、よくコードを見てみると、admin/class.php でも tags.php を require
していました。admin/class.php は ktai_style.php の初期化段階 (WordPress コアによってプラグインがロードされた時点) で require
しているため、結果として、shrinkage.php がプラグイン初期化時点で読まれていることになります。この時点では、携帯テーマの functions.php はまだ読まれていないので、当然そこにフィルター関数を書いても無効なわけです。
うーん。これは require
じゃなくて require_once
と書いていたために発見できなかった現象ですね。安易に once を使ったらダメということかもしれません……。この問題の調査には、報告者さんにもご協力頂きました。大変ありがとうございます。
当初の仕様と違っているため、admin/class.php で tags.php を取り込むのはやめて、class.php では tags.php にある関数群を使わないようにします。また、require_once
は極力 require
に直しましょう。それらの変更を行なった Ktai Style 1.41 は土日に出す予定ですが、テストがなかなか進んでいません。7月上旬まで伸びてしまうかも。
すいません m(_ _)m携帯でコメントをすると 無効なエラーを受信しましたと出るのですが Verは最新です。
これだけでは情報が少なすぎてよく分かりません。携帯電話の機種と、当該サイトの URL を出していただければ調査可能です。URL が出せないならば、サーバーの PHP バージョン、WordPress バージョン、他に使っているプラグインの一覧を提供して頂けないでしょうか。
おそらく Ktai Style のバグだと思うんですが、こちらでは再現できないので、それを突き止めるためにはご協力をお願いいたします。
情報が少なくて大変もうしわけないです。下記に表示します。
携帯電話は SH905iです
OS:Unix(SUN Solaris)
PHP:利用可能(バージョン5.2.1)
CGI:利用可能(Perl5.8.4)
ASP/JSP:利用不可
データベース:MySQL(4.006)
PluginはEvermore 携帯表示 SEO Title Tag Smart Update Pinger Ultimate GA XML-Sitemap AdSenseDeluxe
です。
以上すいませんがよろしくお願いします。
横からですみません。
KIMKIMさんのページにDM001SHコメントしたところ以下のエラーが表示されました。
Internal Server Error
とりあえずご報告まで。
yurikoさんへ
前から考えていたことですが、コメントしたときに使用した携帯端末が表示されるととても便利だと思いますよ。特に多くの端末のユーザーを持っていると、コメントで使われた端末が気になるときがあります。一度ご検討していただけませんか?
ひょっとすると、PHP を CGI 動作させていますでしょうか? その場合、php ファイル先頭に PHP へのパスを書かないといけないかもしれません (#! /usr/bin/php など)。ISP の提供するドキュメントやサーバー管理者に質問してみてください。
WordPress の管理パネルでは、そもそもユーザーエージェントが見えないんですよね……。phpMyAdmin 等で wp_comments テーブルを見れば、記録されたユーザーエージェントが確認できるので、携帯電話の場合は機種も分かります (au の場合はデバイス ID になってしまいますが)。現状、ユーザー ID ないし端末製造番号を表示するようにしているので、そこに機種名を出すことはそんなに難しくはありません。次期マイナーアップデート (1.50 ないし 2.0.0) で検討してみます。1.41 はバグフィックスレベルのため取り入れられそうにないです。
早急のご返答ありがとうございます!!
PHPですが返答内容どおりCGIで動かしております。
ちんなみにPHPのパスはKtaiStyleのどこの記述に加えればよろしいのでしょうか?
KIMKIMさん:
よく考えると、PC からのコメント受付スクリプト wp-comments-post.php は問題なく利用できているんですよね。wp-content/ 配下だと直接呼び出せないような設定がされているのかもしれません。おそらく .htaccess を設定されているでしょうから、その記述内容を教えてください。
PHP のパスを書くとすれば、直接呼び出されるファイルである comments-post.php, login.php, redir.php の3つが対象で、その先頭行です。それ以外のファイルはそのままで OK です。
ご返信ありがとうございます。
.htaccessは特に記述していません レンタルサーバのため汗
後者の方法で設定してみます。
PHPのパスを先頭行に記入しました改善されません、.htaccessの記述内容の確認をしてみたいと思いますのでISPプロバイダに確認してみます。
KIMKIM さん:
ひょっとすると、ファイルに実行権限がない (パーミッションが 705 や 755 になってない) のかもしれません。comments-post.php, login.php, redir.php, wp-admin/*.php について、実行権限を付与してみてください。