サポート » プラグイン » Simple Tagsのst_related_tags()とst_remove_related_tags()の設置方法

  • WP2.5.1日本語版、PHP4.4.2 MySQL4.0.26です。
    Simple Tags1.5.7を使用しています。

    (実現したいこと)
    st_related_tags()とst_remove_related_tags()をタグアーカイブページ(tag.php)内に設置したい。

    (現在の状況)

    • st_the_tags(),st_related_posts(),st_tag_cloud()は特に問題なく使用できている
    • 以前ME版でSimple Taggingを使っていた際は、関連タグ表示、タグ除去機能は使えていた。
    • タグアーカイブページはtag.phpで表示。

    (やってみたけど上手くいかなかった事)
    tag.php内

    (省略)
    <ul>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    <li><a href="<?php the_permalink(); ?>" rel="bookmark" title="View posts <?php the_title(); ?>"><?php the_title(); ?></a></li>
    
    <?php endwhile; else: ?>
    <?php _e('Sorry, no posts matched your criteria.'); ?>
    <?php endif; ?>
    
    </ul>
    
    <h3>関連タグ</h3><!--*1-->
    <?php st_related_tags();?>
    
    <h3>タグを取り除く</h3>
    <?php st_remove_related_tags();?>
    (省略)

    という感じで設定しています。
    このページを表示すると<!–*1–>の部分までしか画面に表示されません。(右側にメニューがある2カラムデザインで、右サイドバーとフッターが表示されないままになっています。)このタグより前の部分は表示されています。
    <!–*1–>以降を取り除くと、特に問題なく表示されます。

    設置位置などに問題があるのでしょうか??
    よろしかったらアドバイスの程、よろしくお願い致します。

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

    (@lilyfan)

    設置位置などに問題があるのでしょうか??

    st_related_tags(), st_remove_related_tags() は WordPress ループの中にないといけないように思います。ループの中に入れてみてください。

    スレッド開始 TAMA-wp

    (@tama-wp)

    lilyfan様

    早速のアドバイスありがとうございます。
    「ループの中に入れる」という意味は、

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php st_related_tags(); ?>
    <?php endwhile; else: ?>
    <?php _e('Sorry, no posts matched your criteria.'); ?>
    <?php endif; ?>

    というような意味でよろしいでしょうか?
    一応タグアーカイブの表示を最初のコードから、タイトルリスト部分など全て取り除いて上記のコードに変更してみましたが、やはり<?php st_related_tags(); ?>の部分以降が表示されません。

    目指している表示はSimpleTaggingと同じく

    Tag Archive for ‘タグA’

    タグAの付けられた記事の一覧(リスト表示)
    ・記事1
    ・記事2
    ・記事3

    リストアップされた記事に付けられているタグA以外のタグ一覧(関連タグ部分)
    1 + タグB
    2 + タグC
    1 + タグD

    //検索されたタグが1つの場合(タグの除去部分)
    取り除けるタグはありません
    //検索されたタグがタグA+タグBの場合
    remove タグA
    remove タグB

    というものですが、この場合ループ内に入れるというのは可能でしょうか?
    いろいろと欲張りな感じで恐縮ですが、よろしかったらアドバイスの程よろしくおねがいします。

    スレッド開始 TAMA-wp

    (@tama-wp)

    現在の状況を簡単に書いてみました。
    解決ではなくただの検証報告です。

    wp2.6.2、SimpleTags1.5.7でテストしました。

    (前回記事からの訂正)
    st_related_tags()の記述を取り除き、URLに手打ちでhttp://example.com/tags/a+bとするとst_removed_related_tags()は問題なく機能しているようです。ので実際に機能してないのはst_related_tags()のみのようです。

    1. php4.4.2+MySQL5.0.51にてテストしましたがやはりst_related_tags()のみ機能しませんでした。
    2. ローカル環境のMySQL5.0.41、php4.4.7環境でも同じ現象でしたが、php5.2.5に変更してみたところst_related_tags()も問題なく機能しました。

    簡単すぎる検証ですが、恐らく何かしらphp4に互換性のないものが使われているのではないかと思います。が、私にはそこがどこなのかまではわかりません(汗)

    もし同じ部分で引っかかっている方の参考になれば幸いです。

    簡単に修正すればphp4環境でも使えるようになる方法をご存知の方がいらっしゃいましたら、引き続きアドバイスをよろしくお願いいたします。

    どうもarray_intersect_keyという関数は
    PHP5からで、PHP4には無い様です。

    もう見て居無いかも知れませんが、、
    一応動くようにしたものを公開したので
    よかったらどうぞ↓

    WordPressのプラグイン「SimpleTags」をPHP4でも使えるようにしてみる +α
    http://w3-info.net/post-243.html

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Simple Tagsのst_related_tags()とst_remove_related_tags()の設置方法」には新たに返信することはできません。