the_tags()の表示順カスタマイズ
-
the_tagsだけでは無理っぽいので
get_the_tags
で属するタグ一覧を取っておいて、phpの配列で並び替えることになるかもです。
もしくはそういうショートタグでも作ってしまえば。kvexさん返信ありがとうございます。
phpの配列やショートタグはヒントなどがないとどうにもこうにものレベルです…
あと、タグはリンク付きにしたいのです。
丸投げな感じで申し訳ないです…まわりくどいかな?
もっと短く書けそうな気もするけど。<?php // var_dump(get_attachment_link($post->id)); $taglist = get_the_tags(); $cnt = 0; foreach($taglist as $val){ $tag_list[$cnt]['name'] = $val -> name; $tag_list[$cnt]['slug'] = $val -> slug; $cnt++; } foreach($tag_list as $key => $row){ $sort[$key] = $row["slug"]; } array_multisort($sort,SORT_ASC,$tag_list); var_dump($tag_list); ?>
kvexさんありがとうございます。
上記のコードを試したことろ、
array(4) { [0]=> array(2) { [“name”]=> string(12) “タグ1” [“slug”]=> string(3) “r00” } [1]=> array(2) { [“name”]=> string(12) “タグ2” [“slug”]=> string(3) “r01” } [2]=> array(2) { [“name”]=> string(3) “タグ3” [“slug”]=> string(3) “r22” } [3]=> array(2) { [“name”]=> string(21) “タグ4” [“slug”]=> string(12) “r31” } }
と表示されるだけでした…
お手数おかけします。
ヒントがあればなんとかなる、ということだったので、あとは表示部分だけだと思うんですけど。
というか、本当にこれでいいのかな?という一抹の不安は残りますけどね。
タグのIDってなんだろう?と実は思っているので。<?php $taglist = get_the_tags(); $cnt = 0; foreach($taglist as $val){ $tag_list[$cnt]['name'] = $val -> name; $tag_list[$cnt]['slug'] = $val -> slug; $cnt++; } foreach($tag_list as $key => $row){ $sort[$key] = $row["slug"]; } array_multisort($sort,SORT_ASC,$tag_list); foreach($tag_list as $val){ ?> <a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>"><?php echo $val['name'];?></a> : <?php } ?>
自宅のテスト用サーバを落としちゃったので、未確認ですがおよそこんな感じじゃぁないかと。
kvexさんありがとうございます。
タグのID昇順で表示されました。これに「区切り文字」を入れることも可能でしょうか?
上記のコードだと「:」が全てのタグについてしまいますよね?
お時間ありましたらよろしくお願いします。<a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>"><?php echo $val['name'];?></a> : <?php } ?>
ここに:があるジャマイカ。お好きなものに変更でъ(`ー゜)
kvexさん、すいません・・・勘違いしてました。
これは、”slug”順の表示になりますよね?
自分が思っていたのは”term_id”順だったので上記を参考に、<?php $taglist = get_the_tags(); $cnt = 0; foreach($taglist as $val){ $tag_list[$cnt]['name'] = $val -> name; $tag_list[$cnt]['slug'] = $val -> slug; $tag_list[$cnt]['term_id'] = $val -> term_id; $cnt++; } foreach($tag_list as $key => $row){ $sort[$key] = $row["term_id"]; } array_multisort($sort,SORT_ASC,$tag_list); foreach($tag_list as $val){ ?> <a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>"><?php echo $val['name'];?></a> : <?php } ?>
で表示させることができました。ありがとうございます。
まぎらわしい言い方だったらすいませんでした・・・「区切り文字」というのは、「:」があるのは確認していたのですが、全てのタグ名の後に付いてしまい、
タグ1:タグ2:タグ3:タグ4:
となってしまうので、
タグ1:タグ2:タグ3:タグ4
と出来たらいいなと思ってまして・・・
言葉足らずで何度もお手数おかけしてすいませんです。
<?php $taglist = get_the_tags(); $cnt = 0; foreach($taglist as $val){ $tag_list[$cnt]['name'] = $val -> name; $tag_list[$cnt]['slug'] = $val -> slug; $tag_list[$cnt]['term_id'] = $val -> term_id; $cnt++; } foreach($tag_list as $key => $row){ $sort[$key] = $row["term_id"]; } array_multisort($sort,SORT_ASC,$tag_list); ?> <?php foreach($tag_list as $val): next($tag_list); ?> <a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>/"><?php echo $val['name'];?></a> <?php echo (current($tag_list) !== false) ? ' : ' : '' ?> <?php endforeach; ?>
で区切り文字を入れるようにしました。
このような書き方でいいのでしょうか?
ご指摘なければ後日「解決済み」にさせていただきます。
ご指導いただいた、kvexさん、shokun0803さん、ありがとうございました。
- トピック「the_tags()の表示順カスタマイズ」には新たに返信することはできません。