Ktai Style 1.40 を使用してみた

というわけで、WordPressの携帯対応プラグインである『Ktai Style バージョン1.40』がリリースされていたのでアップグレードしてみました。以下、ちょっとした感想……

『続きを読む』の部分が、以前はパソコン絵文字へと変換されていたのだが、矢印絵文字へと変換されるように変わっていた。どうやら、外部リンクを示す絵文字と同じものが表示されるみたいですね。

アップグレードしたついでに、フィルターフックの『mobile_same_url/ktai_style.php』を利用して携帯用サイトのアドレスを追加したのだが、何故かうまくいかなかった。『shrinkage.php』ファイルの『$mobile_same_url』配列にURLを無理やり追加したら、うまくいくんだけどなぁ……僕のやり方がおかしいのかな?

テーマファイルが見やすくなっていた。僕は、かなりテーマファイルをカスタマイズしているので、他のテーマと見比べながらインデントした。あ、いつの間にか『FALSE』が『false』に変わっている(笑)

というわけで、テーマファイルを色々といじっているので、もしかしたらどこかおかしくなっている部分があるかもしれません。何かありましたらご連絡ください。

11 Comments

  1. 『mobile_same_url/ktai_style.php』を利用して携帯用サイトのアドレスを追加したのだが、何故かうまくいかなかった。

    CUSTOMIZE.ja.html にあるサンプルコードで動くはずが、どのようなコードを書かれていますでしょうか?
    また、フィルター関数をどこに置かれていますでしょうか? 携帯テーマの functions.php ないし my-hacks.php におけば大丈夫です。PC テーマの functions.php は読まれないので、そこに書いてるとすると動きません。

  2. わざわざコメントいただきありがとうございます。

    僕が記述したフィルター関数ですが、適用している携帯テーマの functions.php に記述しており、他のフィルター関数を使って正しく動作していることが確認できているので、記述場所がおかしいということはなさそうです。
    また、コードについてですが、サンプルコードに書かれているものをそのまま貼り付けるような形で記述しています。

    ただ、単なるケアレスミスで正しく動作できていない可能性も高いと思いますので、まずは色々と自分で原因を探ってみたいと思います。

  3. 色々と試してみた結果、
    shrinkage.php ファイルの __construct()関数中にある、

    $this->mobile_pat = '!^(' . implode('|', apply_filters('mobile_same_url/ktai_style.php', self::$mobile_same_url)) . ')!';

    の部分を、

    $this->mobile_pat = '!^(' . implode('|', apply_filters('mobile_same_url/ktai_style.php', $this->mobile_same_url)) . ')!';

    のように『::演算子』を使用している部分を書き換えてみると、想定したとおりの動作をしてくれました。ただ、これがサーバー環境によるものなのか、書き換えることによって他に影響を及ぼすのか、などは良く分かっていませんが……汗

  4. $mobile_same_url は static 宣言しているため直接の変更はできません。しかし、フィルター関数の引数とすれば値渡しになるはずなので問題ないと考えて、上記コードとしています。 環境によっては参照渡しになるのかもしれません。PHP バージョンはいくつでしょうか?

  5. コメントした後に気がついたんですが、static変数に対して $this->mobile_same_url ではアクセスできませんよね……
    上のコメントで『想定したとおりの動作』と書いたのは、単に $this->mobile_pat のモバイルURLとマッチする正規表現部分をほぼ空白状態にしてしまったために、すべてのURLにマッチしているだけでした(汗)申し訳ありません。

    PHPバージョンは5.2.5で、セーフモードで動いています。

  6. セーフモードというのが気になりますが、5.2.5 だと大丈夫そうですね。
    追加した URL パターンが正規表現として不正になったりしていませんでしょうか?
    どうしてもダメそうならば、フィルター関数の中身を以下のようにしてみてください。
    function ks_add_mobile_sites($orig) {
    $url_pat[] = 'http://blog\.example\.jp/';
    return ($orig + $url_pat);
    }

  7. 解決策をご提示いただきありがとうございます。

    >追加した URL パターンが正規表現として不正になったりしていませんでしょうか?
    確認してみましたが、正規表現部分で誤った記述はありませんでした。

    >どうしてもダメそうならば、フィルター関数の中身を以下のようにしてみてください。
    試してみましたが……
    書いていただいたコードに変更してみても動作しませんでした。

    また、あれから Ktai Style 独自のフィルターフックを色々と調べてみました。
    調べ方は、フィルターフックで指定されたフック関数が正しく呼び出されているのかを、各関数の一行目にファイル出力の処理を書き加えることでチェックしてみましたが、うちの環境下では、「mobile_same_url/ktai_style.php」と「none_mobile_url/ktai_style.php」のフィルターフックでは、ファイル出力がされませんでした。
    (注:すべてのフィルターフックを調べたわけではありませんが、他のフィルターフックで指定された関数ではファイル出力が正常に行われました。)

    なので、正規表現や参照渡しなどが正しく動作しない原因ではなさそうです……
    この現象が起こるのが、うちの環境下でくらいしか起こらないのであれば、mobile_same_url/ktai_style.php のフィルターフックを使用するのは諦めて、shrinkage.php を直接修正することで対応しておこうかと思います。

  8. なるほど、そういう状況だとすると、「mobile_same_url/ktai_style.php」と「none_mobile_url/ktai_style.php」を使うためのフィルター関数が呼び出されていませんね。こちらで確認してみたところ、テーマの functions.php では無理で、my-hacks.php に入れないと呼び出されないことが判明しました。これはちょっと不便ですね。
    テーマの functions.php に入れても呼び出されるよう、今後、apply_filters のタイミングを調整してみます。

  9. どうもありがとうございます。
    うちの環境でも、my-hacks.php に記述したところ正しく動作しました!

    最初にコメントをいただいた時点で、my-hacks.php も試してみるべきでしたね……
    お手数をかけてしまいすみませんでした。

  10. 当初の予定では functions.php に記載しても動作するつもりなのですが、そうなっていないのは、コードに問題があると考えています (my-hacks.php にフィルターを書かないといけないフックはドキュメントに明記してあるので)。問題箇所はだいたい分かりましたので、テスト完了しだい、修正版を出したいと思います。

  11. 了解しました。
    丁寧な対応をしていただきありがとうございます。
    これからも、素晴らしいプラグインの開発を期待しています。

Sorry, the comment form is closed at this time.