サポート » プラグイン » Ktai Styleのリンク先ホスト名省略機能について

  • WordPressとKtai Styleを使用して携帯用blogを作成しようとしています。

    WordPressの設置とKtai Styleの導入に関しては問題ありませんでしたが、携帯サイトの管理画面から投稿・公開した場合に、Feed Validatorによるチェックが通らなくなる現象が発生しました。

    Ktai Styleの機能にリンク先ホスト名を省略する機能がありますが、WordPressのwp_insert_post()関数内で呼ばれているget_permalink()関数に対してもこの機能が働いてしまうため、wp_postsテーブルのguidに格納されるパーマリンク(?)からもホスト名が削られた状態となっているようです。(フィード組み立て時にここの値をそのまま出力している?)
    ktai_style.phpのstrip_host()関数をreturn $url;とすれば解消するようなのですが、影響度が不明なため避けたいです。

    現状、Feed Validatorでチェックが通らない以外の問題が出ていないため、気にしなければよいのでしょうが、何か妙案があればアドバイスいただけないでしょうか。
    または、導入方法に誤りがあればご指摘願います。

    ・環境
    Apache2 2.2.3
    PHP 5.2.6
    MySQL 5.0.27
    WordPress 2.6.5
    Ktai Style 1.46

    ・同時使用プラグイン
    なし

    ・テーマ
    WordPress本体:デフォルトテーマ
    Ktai Style:デフォルトテーマ

    ・投稿時の携帯端末
    DoCoMo P905i … 再現
    SONY PSP … 再現

    以上、よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    プラグイン作者です。

    wp_postsテーブルのguidに格納されるパーマリンク(?)からもホスト名が削られた状態となっているようです。(フィード組み立て時にここの値をそのまま出力している?)

    なるほど、確かにそうなっていますね。これは気がつきませんでした。RSS 0.92 フィードのときは、都度 the_permalink_rss() を使うために問題ありませんが、RSS 2 フィードの場合は guid フィールドが存在して、そこで wp_posts の guid をそのまま出しています。

    wp_posts の guid フィールドにどういう値が入るのかは、よく分かりません (Codex の Database 構造 をみても VARCHAR(255) という定義しかない)。
    URI を入れる仕様なのであれば、Ktai Style の挙動は仕様違反なので直さないといけませんね。既存の guid フィールドの修正および、今後の携帯投稿時の挙動の両方が対象となります。

    単にユニークな文字列を入れればいいのならば、the_guid() 関数の出力をいじればよいことになります (get_the_guid フィルターを使う)。

    とりあえず、問題回避するためには、get_the_guid フィルターを使って、http:// で始まってない場合は、get_bloginfo('url') のホスト部分だけを追加するという処理を行えばよいと思われます。

    トピック投稿者 kuroken1

    (@kuroken1)

    lilyfan様

    返事が遅れてしまい申し訳ございません。
    対応方法の件ありがとうございます。
    アドバイスいただいた方法にてサンプルプラグインを作成し、良好な結果を得ています。

    また、lilyfan様のサイトにてKtai Styleのベータ版をダウンロードさせていただきました。
    こちらのバージョンについても検証してみたいと思います。

    ありがとうございました。

    以下は作成したサンプルコードです。
    おかしな点などがあればご指摘ください。
    (PHP自体今回初めてで、見よう見まねで記述しています…)

    <?php
    /*
    Plugin Name: Fix_Guid
    Plugin URI: http://example.com/
    Description: get_the_guid filter.
    Version: 0.01
    Author: kuroken1
    Author URI: http://example.com/
    */
    
    function fix_guid( $guid ) {
            if ( strlen ( $guid ) > 0 ) {
                    if ( strncmp ( $guid, 'http://', 7 ) !== 0 ) {
                            $urlarr = parse_url ( get_bloginfo ( 'url' ));
                            return "http://" . $urlarr[host] . $guid;
                    }
            }
            return $guid;
    }
    
    add_filter( 'get_the_guid', 'fix_guid', 99 );
    
    ?>

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Ktai Styleのリンク先ホスト名省略機能について」には新たに返信することはできません。