• お世話になっております。
    WordPress 2.9.1 で Ktai Style のバージョン1.81を使用中です。

    Ktai Style は欲しい機能がほとんど揃っていて、本当に秀逸なソフトだと思います。
    これからもよろしくお願いします。

    さて、表題の件ですが、
    ショートコードを使ってアフィリエイトなどのトラッキングコードを埋め込もうと考えたのですが、
    ひとつ問題が発生しました。

    ショートコードで吐き出したimgファイルのsrc内、クエリ部分の & が & に変換されてしまうのです。
    アフィリエイトによっては & では正確にトラッキングできないこともあるので困りました。

    フックを追ってみたところ、
    the_content() ではショートコードのままでしたが、
    raw_content/ktai_style.php ではショートコードが変換され、&も変換されていました。

    それで、ソースを追ってみたところ、

    shrinkage.php 136行目

    add_filter(‘the_content’, array($this, ‘shrink_content’), 90);

    さらに追って、shrinkage.php 727行目~

    public function shrink_content($content) {
    if (! $this->skip_shrink_content) {
    $content = preg_replace(‘!<del[^>]*>.*?</del>!s’, ”, $content);
    $content = $this->strip_styles_scripts($content);
    $content = $this->parent->filter_tags($content);
    $content = $this->convert_links($content);
    $content = $this->convert_images($content);
    }
    return $content;
    }

    ここの $this->parent->filter_tags で変換されていることが分かりましたが、
    フックもなにもないので、仕方なく以下の方法で対処しました。

    // do_shortcode の順番を遅くすることで対処(いったん削除して再登録)
    remove_filter( 'the_content', 'do_shortcode',11 );
    add_filter('the_content','do_shortcode',100);

    すでに解決している問題ではあるのですが、
    あまりいい解決策ではない気がします。

    他にいい解決方法などあるでしょうか?

    また、できれば勉強のために & を &amp; に変換する理由を
    ご教授いただければと思います。

    よろしくお願いいたします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • また、できれば勉強のために & を &amp; に変換する理由を
    ご教授いただければと思います。

    XHTML 準拠のためです。href や src 属性に書く URL に & があれば、& にエンコードするのが規定となっています。エンコードして書いても、ウェブブラウザーがきちんとデコードするので、「むりやり & と書く」ようにするのと結果は同じになるはずです。

    アフィリエイトによっては &amp; では正確にトラッキングできないこともあるので困りました。

    これはウェブブラウザーがおかしいのか、& を二重にエンコードしてしまっているかいずれかでしょう。基本的には問題ないはずです。アフィリエイト側に、「正しい XHTML を使いたいのでリンク URL は & を使ってほしい」と要望してみてください。

    # リンクシェアについては、img タグが大文字というのも困るところ。IMG だったら HTML 4.01 しか使えないじゃないか!!

1件の返信を表示中 - 1 - 1件目 (全1件中)

トピック「Ktai Style でショートコードのエンコード」には新たに返信することはできません。